add tests and a 'make all'