fixed cross_product()