implemented crossproduct