Add unit tests, reorganize library, make a read me