refactored interfaces, switched down to java 7