Command Query Separation (CQS) - A simple but powerful pattern