refactored interfaces into one big place. Haven't fixed stuff yet