prepared to handle cancel in gesture handler, added combined test, more to ponder though, seems like its hard to capture problems in tests. did some more refactoring