Merged core and impure, tidied up file structure
Added more typespecs, more descripive naming