Add basic interface, functionality and unit tests