refactor PenguinView into separate class