many additional unit tests implemented