cleaned up and documented likely_type_from_types