switch to dispatch_generic and fix scroll cancel