implement implicit type conversion rules