naive multiply works
fixed constness
conversion operator
conversion operator
generic multiply