added test suite
refactor object model better