add tests & 100% coverage (fixes #25)