async public Task <IPosel> GetPosel(int id)
        {
            try {
                IJsonObjectRequestHandler <Posel> handler = new JsonObjectRequestHandler <Posel> (ConnectionProvider.Instance);

                var request = new RequestParamsHandler(String.Concat(RepositoriesContants.API_BASE_URI, "poslowie/", id));
                request.AddField("poslowie.id");
                request.AddField("poslowie.imie_pierwsze");
                request.AddField("poslowie.nazwisko");
                request.AddField("poslowie.biuro_html");
                request.AddField("poslowie.okreg_wyborczy_numer");
                request.AddField("sejm_kluby.nazwa");
                request.AddField("poslowie.liczba_projektow_uchwal");
                request.AddField("poslowie.liczba_projektow_ustaw");
                request.AddField("poslowie.data_urodzenia");
                request.AddField("poslowie.frekwencja");
                request.AddField("poslowie.mowca_id");
                request.AddField("ludzie.id");
                request.AddField("poslowie.miejsce_zamieszkania");

                request.Layers.Add(new BiuraPoselskieLayer("biura"));

                Posel p = await handler.GetJsonObjectAsync(request);

                return(p);
            } catch (IOException ex) {
                System.Diagnostics.Debug.WriteLine("IOException on GetJsonObjectAsync", ex.ToString());
                throw new ApiRequestException(String.Concat("Problem z połączeniem:\n", ex.Message));
            } catch (Exception ex) {
                System.Diagnostics.Debug.WriteLine("GetJsonObjectAsync", ex.ToString());
                throw new ApiRequestException(String.Concat("Problem z dostępem do API:\n", ex.Message));
            }
        }
        async public Task <IInterpellation> GetPoselInterpellation(int id)
        {
            try {
                IJsonObjectRequestHandler <Interpellation> handler = new JsonObjectRequestHandler <Interpellation> (ConnectionProvider.Instance);

                var request = new RequestParamsHandler(String.Concat(RepositoriesContants.API_BASE_URI, "sejm_interpelacje/", id));
                request.AddField("sejm_interpelacje.tytul");
                request.AddField("sejm_interpelacje.data_wplywu");
                request.AddField("sejm_interpelacje.adresaci_str");
                request.AddField("sejm_interpelacje.tytul_skrocony");

                request.Layers.Add(new InterpelacjaLayer("dane"));

                Interpellation p = await handler.GetJsonObjectAsync(request);

                return(p);
            } catch (IOException ex) {
                System.Diagnostics.Debug.WriteLine("IOException on GetJsonObjectAsync", ex.ToString());
                throw new ApiRequestException(String.Concat("Problem z połączeniem:\n", ex.Message));
            } catch (Exception ex) {
                System.Diagnostics.Debug.WriteLine("GetJsonObjectAsync", ex.ToString());
                throw new ApiRequestException(String.Concat("Problem z dostępem do API:\n", ex.Message));
            }
        }
        async public Task <IVoting> GetSejmVoting(int id)
        {
            try {
                IJsonObjectRequestHandler <Voting> handler = new JsonObjectRequestHandler <Voting> (ConnectionProvider.Instance);

                var request = new RequestParamsHandler(String.Concat(RepositoriesContants.API_BASE_URI, "sejm_glosowania/", id));
                request.AddField("sejm_glosowania.id");
                request.AddField("sejm_glosowania.wynik_id");
                request.AddField("sejm_glosowania.tytul");
                request.AddField("sejm_glosowania.czas");

                request.Layers.Add(new SejmGlosowanieLayer("wynikiIndywidualne"));

                IVoting p = await handler.GetJsonObjectAsync(request);

                return(p);
            } catch (IOException ex) {
                System.Diagnostics.Debug.WriteLine("IOException on GetJsonObjectAsync", ex.ToString());
                throw new ApiRequestException(String.Concat("Problem z połączeniem:\n", ex.Message));
            } catch (Exception ex) {
                System.Diagnostics.Debug.WriteLine("GetJsonObjectAsync", ex.ToString());
                throw new ApiRequestException(String.Concat("Problem z dostępem do API:\n", ex.Message));
            }
        }
        async public Task <ISpeech> GetPoselSpeech(int id)
        {
            try {
                IJsonObjectRequestHandler <Speech> handler = new JsonObjectRequestHandler <Speech> (ConnectionProvider.Instance);

                var request = new RequestParamsHandler(String.Concat(RepositoriesContants.API_BASE_URI, "sejm_wystapienia/", id));
                request.AddField("sejm_wystapienia.id");
                request.AddField("sejm_debaty.tytul");
                request.AddField("sejm_wystapienia.data");
                request.AddField("sejm_wystapienia.skrot");

                request.Layers.Add(new TrescWystapieniaLayer("html"));

                Speech p = await handler.GetJsonObjectAsync(request);

                return(p);
            } catch (IOException ex) {
                System.Diagnostics.Debug.WriteLine("IOException on GetJsonObjectAsync", ex.ToString());
                throw new ApiRequestException(String.Concat("Problem z połączeniem:\n", ex.Message));
            } catch (Exception ex) {
                System.Diagnostics.Debug.WriteLine("GetJsonObjectAsync", ex.ToString());
                throw new ApiRequestException(String.Concat("Problem z dostępem do API:\n", ex.Message));
            }
        }