refactor controller state transition and requester to fetch data