implementations for a few quaternion related methods