refactor with Vector3f and Matrix3f
api impl