start reworking pointer input model