refactored hexagon model