big refactoring of interfaces