added shake events because why not