got basic structure working, added tests