public async Task<IResult<Lfm>> GetToken(ILastFmCredentials credentials)
        {
            var command = new LastFmCommand<Lfm>(this.baseUrl, false)
                .RegisterParameter(r => r.RegisterGet("method", "auth.getToken"));

            return await this.executer.ExecuteAsync(credentials, command);
        }
        public async Task<IResult<AuthGetMobileSessionResult>> GetMobileSession(ILastFmCredentials credentials, string username, string password, string apiKey) {
           var command = new LastFmCommand<AuthGetMobileSessionResult>(this.baseUrl, false)
                .RegisterParameter(r => r.RegisterGet("method", "auth.getMobileSession"))
                .RegisterParameter(r => r.RegisterGet("username", username))
                .RegisterParameter(r => r.RegisterGet("password", password))
                .RegisterParameter(r => r.RegisterGet("api_key", apiKey));

            return await this.executer.ExecuteAsync(credentials, command);
        }
        public async Task<IResult<GetRecentTracksResult>> GetRecentTracks(ILastFmCredentials credentials, string user, int? page, int? from, int? to,
            int? limit, bool? extended = null)
        {
            var command = new LastFmCommand<GetRecentTracksResult>(this.baseUrl, false)
                .RegisterParameter(r => r.RegisterPost("method", "user.getRecentTracks"))
                .RegisterParameter(r => r.RegisterPost("user", user))
                .RegisterParameter(r => r.RegisterPost("page", page))
                .RegisterParameter(r => r.RegisterPost("from", from))
                .RegisterParameter(r => r.RegisterPost("to", to))
                .RegisterParameter(r => r.RegisterPost("limit", limit))
                .RegisterParameter(r => r.RegisterPost("extended", extended));

            return await this.executer.ExecuteAsync(credentials, command);
        }