moved surface calc to worker, fixed mouse input + misc