refactoring PlayerGroup: composition over inheritance