TODO lots. but need to write this up here