moving some interfaces into their own files