Rethinking Quaternions: Theory and Computation