<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def __fix_bases(base_classes, have_mt):
 """This function check whether base_classes contains a Model instance. If not, choose the best fitting class for model. Furthermore, it makes the list in a cannonical ordering form in a way that ic can be used as memoization key"""

        fixed = list(base_classes)
        contains_model = False
        for b in fixed:
            if isinstance(fixed, Model): contains_model = True; break
            pass

        # adds a model when user is lazy
        if not contains_model:
            if have_mt:
                from gtkmvc3.model_mt import ModelMT
                fixed.insert(0, ModelMT)
            else: fixed.insert(0, Model)
            pass

        class ModelFactoryWrap (object):
            __metaclass__ = get_noconflict_metaclass(tuple(fixed), (), ())
            def __init__(self, *args, **kwargs): pass
            pass

        fixed.append(ModelFactoryWrap)
        fixed.sort()
        return tuple(fixed)