First commit of complete library with tests