input controller impl