added cross_product and some documentation