Test against traits instead of implementations
Refactoring interface