clean up
fix mobile
add shield and fix getNormalAt func