got basic implementation working all tests clean