added base classes and started unit tests