add interfaces, classes and tests