refactored to more usable framework

removed some excessive classes, added test for custom types, interface
imementers