now with abstraction, zips, and hexagons