added quaternion.h