public static void configureMessageCenterPolling() {
        final Observable<JsonNode> pollingObservable = Observable.interval(10, 300, TimeUnit.SECONDS)
                .flatMap(tick -> {
                    if (Settings.getBoolean(R.string.pref_pollMessageCenter, false)) {
                        final JsonNode temp = getMessageCenterStatus();
                        return temp != null ? Observable.just(temp) : Observable.empty();
                    } else {
                        return Observable.empty();
                    }
                });

        final Disposable mcpoll = pollingObservable
                .subscribeOn(Schedulers.io())
                .observeOn(Schedulers.single())
                .subscribe(data -> {
                    @SuppressLint("SimpleDateFormat")
                    final DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
                    final long time = Objects.requireNonNull(df.parse(data.at("/lastConversationActivityDateUtc").textValue())).getTime();
                    lastCount = Integer.parseInt(data.at("/unreadConversationCount").toString());
                    if (time != lastMCTime) {
                        lastMCTime = time;
                        Log.d("received message center update, count=" + lastCount);
                        notifyIfMessagesPending();
                    }
                }, throwable -> Log.e("Error occurred while polling message center: " + throwable.getMessage()));
    }
configures polling of message center - to be called by CGeoApplication
main/src/main/java/cgeo/geocaching/utils/MessageCenterUtils.java