- make it compile
 - add some tests
 - clean up