more code
next
added tests
more