Organize implementation in an OO way