class BaseAccountInformationService extends AbstractService implements AccountInformationService {

    @Override
    public Response<AccountList> getAccountList(RequestHeaders requestHeaders, RequestParams requestParams) {
        requireValid(validateGetAccountList(requestHeaders, requestParams));

        Map<String, String> headersMap = populateGetHeaders(requestHeaders.toMap());
        headersMap = addConsentIdHeader(headersMap);

        String uri = buildUri(getAccountsBaseUri(), requestParams);

        Response<AccountList> response = httpClient.get(uri)
                                             .headers(headersMap)
                                             .send(jsonResponseHandler(AccountList.class), interceptors);

        Optional.ofNullable(response.getBody())
            .map(AccountList::getAccounts)
            .ifPresent(accounts ->
                           accounts.forEach(account -> account.setLinks(linksRewriter.rewrite(account.getLinks()))));

        return response;
    }

    public  BaseAccountInformationService(Aspsp aspsp, HttpClient httpClient);
    public  BaseAccountInformationService(Aspsp aspsp,
                                         HttpClient httpClient,
                                         Interceptor requestBuilderInterceptor);
    public  BaseAccountInformationService(Aspsp aspsp,
                                         HttpClient httpClient,
                                         LinksRewriter linksRewriter);
    public  BaseAccountInformationService(Aspsp aspsp,
                                         HttpClient httpClient,
                                         Interceptor requestBuilderInterceptor,
                                         LinksRewriter linksRewriter);
    public  BaseAccountInformationService(Aspsp aspsp,
                                         HttpClient httpClient,
                                         List<Interceptor> interceptors,
                                         LinksRewriter linksRewriter);

}