implement the right workflow