<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def do(self, fn, message=None, *args, **kwargs):
 """Add a 'do' action to the steps. This is a function to execute :param fn: A function :param message: Message indicating what this function does (used for debugging if assertions fail) """

        self.items.put(ChainItem(fn, self.do, message, *args, **kwargs))
        return self