fix observer leak, observer pan gesture recognizer directly instead