Worked some more, added some implementation classes