added non-vector product