public void Execute(object command) { switch (command) { case Start_sprint s: { var state = new SprintState( _all_events() .Where(_ => _._source == s.Sprint) .Select(_ => _._e)); var sprint = new Sprint(state, (e) => { state.Apply(e); _publish(new EventMessage(s.Sprint, e)); }); sprint.Start(); } break; case Finish_task s: { var state = new SprintState( _all_events() .Where(_ => _._source == s.Sprint) .Select(_ => _._e)); var sprint = new Sprint(state, (e) => { state.Apply(e); _publish(new EventMessage(s.Sprint, e)); }); sprint.Finish_task(s.Task); } break; } }