@classmethod
def create(cls, name, defn, state=None):
    """
        Create a new program object
        """
    prog = cls(name, False)
    prog.raw_data.update(defn)
    prog.state.update(state or {})
    prog.mk_data()
    return prog
