starting to rewrite a lot now