lots of new files and heavy refactoring going on