public async Task<ActionResult> RetrieveCharacterAsync(RetrieveCharacterCmd cmd)
        {
            var cmdValidation = new CommandValidation();

            cmdValidation.validate(() => cmd.Id == Guid.Empty, "idCharacter cannot be empty");

            if (!cmdValidation.IsValid())
                //todo give back some 4/5xx love?
                return Json( cmdValidation.ToResponse());
            else
            {
                var currentUser = _serviceUser.getCurrentUser();
                var result = await _serviceAccount.RetrieveCharacterAsync(currentUser.Id, cmd.Id);

                var executionResult = new ExecutionValidation(result);
                //todo give back some 4/5xx love if it failed?
                return Json( executionResult.ToResponse());
            }
        }
        public async Task<ActionResult> AddNewCharacterAsync(CreateCharacterCmd cmd)
        {
            var cmdValidation = new CommandValidation();

            Domain.Model.Faction faction = null;
            Domain.Model.Race race = null;
            Domain.Model.Class @class = null;

            cmdValidation.validate(() => cmd.Id == Guid.Empty, "id cannot be empty");
            cmdValidation.validate(() => string.IsNullOrEmpty(cmd.Name), "name cannot be empty");
            cmdValidation.validate(() => !Domain.Model.ClassFactory.TryParse(cmd.Class, out @class), "class is not known");
            cmdValidation.validate(() => !Domain.Model.FactionFactory.TryParse(cmd.Faction, out faction), "faction is not known");
            cmdValidation.validate(() => !Domain.Model.RaceFactory.TryParse(cmd.Race, out race), "race is not known");
            //cmdValidation.validate(() => cmd.Level<1 || cmd.Level>100, "level is not available"); not in the rules.. :)

            if (!cmdValidation.IsValid())
                //todo give back some 4/5xx love?
                return Json(cmdValidation.ToResponse());
            else
            {
                var currentUser = _serviceUser.getCurrentUser();
                var result = await _serviceAccount.CreateCharacterAsync(currentUser.Id, cmd.Id, cmd.Name, cmd.Level, race, faction, @class);
                var executionResult = new ExecutionValidation(result );
                //todo give back some 4/5xx love if it failed?
                return Json(executionResult.ToResponse());
            }
                
        }