add tests and extend description