lots of performance/touch optimization; needs some refactoring, but happy with the results on low-end android