work in progress, some unit tests added. still experimenting with project structure nd design.