Naive migration to use lens
Create HasPosition typeclass to avoid clumsy position checks