added cross product as static method