restructured project to put interfaces into their own module