refactored interfaces into separate files