additional unit testing
finish first implementation