public void doExecute(final Action1<ProgressButtonDisposableHandler> action) {
                final CacheDetailActivity activity = (CacheDetailActivity) getActivity();
                if (activity != null) {
                    if (ProgressBarDisposableHandler.isInProgress(activity) || activity.progress.isShowing()) {
                        activity.showToast(activity.res.getString(R.string.err_detail_still_working));
                        return;
                    }
                    handler.showProgress(button);
                }
                AndroidRxUtils.networkScheduler.scheduleDirect(() -> action.call(handler));
            }
Abstract Listener for add / remove buttons for watchlist
main/src/main/java/cgeo/geocaching/CacheDetailActivity.java