class Move a where move :: Point -> a -> a instance Move DrawCommand instance Move a => Move (Maybe a) instance Move Point instance Move Rect instance Move Line fmove :: (Move b, Functor f) => Point -> f b -> f b