worked on implementation

* doesn't build yet