Command query responsibility segregation pattern