* Refactored Factory/Scheme into seperate classes
* Added client (different package) and serialization tests
Merge remote-tracking branch 'origin/master'