Start refactoring: definitions, a class implementing P2, P3