added constraint separation:ApiMustNotDependOnImplementation