separated implementation into their own projects

lots of other stuff