camera works now with quaternions + clean up math methods