<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def consume(self, event):
 """ process the current event, setup new state and teardown current state """

        future_states = self.can(event)

        new_state = future_states[0]
        if len(future_states) > 1:
            new_state = self.choose(event)
        event.execute()
        self.process(event)
        new_state.setup(event, self)
        self.teardown(event)
        return new_state