there's already a type for this
implement zooming