continue reworking pointer input model