Basics working, proper tests and some docs