fixing logic for down vs hold, and reacting when letting go