diff --git a/.gitignore b/.gitignore
index e4fdd13598..16dd0d118c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,238 +1,239 @@
 # Common
 \#*
 .\#*
 GPATH
 GRTAGS
 GTAGS
 TAGS
 Makefile
 Makefile.in
 .deps
 .dirstamp
 .libs
 *.pc
 *.pyc
 *.bz2
 *.tar.gz
 *.tgz
 *.la
 *.lo
 *.o
 *~
 *.gcda
 *.gcno
 
 
 # Autobuild
 aclocal.m4
 autoconf
 autoheader
 autom4te.cache/
 automake
 build.counter
 compile
 /confdefs.h
 config.guess
 config.log
 config.status
 config.sub
 configure
 /conftest*
 depcomp
 install-sh
 include/stamp-*
 libtool
 libtool.m4
 ltdl.m4
 libltdl
 ltmain.sh
 missing
 py-compile
 /m4/argz.m4
 /m4/ltargz.m4
 /m4/ltoptions.m4
 /m4/ltsugar.m4
 /m4/ltversion.m4
 /m4/lt~obsolete.m4
 test-driver
 ylwrap
 
 # Configure targets
 /cts/CTS.py
 /cts/CTSlab.py
 /cts/CTSvars.py
 /cts/LSBDummy
 /cts/OCFIPraTest.py
 /cts/benchmark/clubench
 /cts/cluster_test
 /cts/cts
 /cts/cts-cli
 /cts/cts-coverage
 /cts/cts-exec
 /cts/cts-fencing
 /cts/cts-log-watcher
 /cts/cts-regression
 /cts/cts-scheduler
 /cts/cts-support
 /cts/fence_dummy
 /cts/lxc_autogen.sh
 /cts/pacemaker-cts-dummyd
 /cts/pacemaker-cts-dummyd@.service
 /daemons/execd/pacemaker_remote
 /daemons/execd/pacemaker_remote.service
 /daemons/fenced/fence_legacy
 /daemons/pacemakerd/pacemaker
 /daemons/pacemakerd/pacemaker.combined.upstart
 /daemons/pacemakerd/pacemaker.service
 /daemons/pacemakerd/pacemaker.upstart
 /doc/Doxyfile
 /extra/logrotate/pacemaker
 /extra/resources/ClusterMon
 /extra/resources/HealthSMART
 /extra/resources/SysInfo
 /extra/resources/ifspeed
 /extra/resources/o2cb
 include/config.h
 include/config.h.in
 include/crm_config.h
 publican.cfg
 /tools/cibsecret
 /tools/crm_error
 /tools/crm_failcount
 /tools/crm_master
 /tools/crm_mon.service
 /tools/crm_mon.upstart
 /tools/crm_report
 /tools/crm_rule
 /tools/crm_standby
 /tools/pcmk_simtimes
 /tools/report.collector
 /tools/report.common
 
 # Build targets
 *.7
 *.7.xml
 *.7.html
 *.8
 *.8.xml
 *.8.html
 /daemons/attrd/pacemaker-attrd
 /daemons/based/pacemaker-based
 /daemons/based/cibmon
 /daemons/controld/pacemaker-controld
 /daemons/execd/cts-exec-helper
 /daemons/execd/pacemaker-execd
 /daemons/execd/pacemaker-remoted
 /daemons/fenced/cts-fence-helper
 /daemons/fenced/pacemaker-fenced
 /daemons/fenced/pacemaker-fenced.xml
 /daemons/pacemakerd/pacemakerd
 /daemons/schedulerd/pacemaker-schedulerd
 /daemons/schedulerd/pacemaker-schedulerd.xml
 /doc/*/tmp/**
 /doc/*/publish
 /doc/*.build
 /doc/*/en-US/Ap-*.xml
 /doc/*/en-US/Ch-*.xml
 /doc/.ABI-build
 /doc/HTML
 /doc/abi_dumps
 /doc/abi-check
 /doc/api/*
 /doc/compat_reports
 /doc/crm_fencing.html
 /doc/publican-catalog*
 /doc/shared/en-US/*.xml
 /doc/shared/en-US/images/pcmk-*.png
 /doc/shared/en-US/images/Policy-Engine-*.png
 /doc/sphinx/*/_build
 /doc/sphinx/*/conf.py
 /lib/common/md5.c
+/maint/testcc_helper.cc
 /maint/testcc_*_h
 /maint/mocked/based
 scratch
 /tools/attrd_updater
 /tools/cibadmin
 /tools/crmadmin
 /tools/crm_attribute
 /tools/crm_diff
 /tools/crm_mon
 /tools/crm_node
 /tools/crm_resource
 /tools/crm_shadow
 /tools/crm_simulate
 /tools/crm_ticket
 /tools/crm_verify
 /tools/iso8601
 /tools/stonith_admin
 xml/crm.dtd
 xml/pacemaker*.rng
 xml/versions.rng
 xml/api/api-result*.rng
 lib/gnu/libgnu.a
 lib/gnu/stdalign.h
 *.coverity
 
 # Packager artifacts
 *.rpm
 /mock
 /pacemaker.spec
 /rpm/[A-Z]*
 
 # make dist/export working directory
 pacemaker-[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]
 
 # Test detritus
 /cts/.regression.failed.diff
 /cts/scheduler/*.ref
 /cts/scheduler/*.up
 /cts/scheduler/*.up.err
 /cts/scheduler/bug-rh-1097457.log
 /cts/scheduler/bug-rh-1097457.trs
 /cts/scheduler/shadow.*
 /cts/test-suite.log
 /xml/test-*/*.up
 /xml/test-*/*.up.err
 /xml/assets/*.rng
 /xml/assets/diffview.js
 /xml/assets/xmlcatalog
 
 # Test results
 *.log
 *.trs
 /lib/common/tests/strings/pcmk__parse_ll_range
 /lib/pengine/tests/rules/pe_cron_range_satisfied
 
 # Release maintenance detritus
 /maint/gnulib
 
 # Formerly built files (helps when jumping back and forth in checkout)
 /.ABI-build
 /Doxyfile
 /HTML
 /abi_dumps
 /abi-check
 /compat_reports
 /attrd
 /cib
 /coverage.sh
 /crmd
 /cts/HBDummy
 /doc/Clusters_from_Scratch.txt
 /doc/Pacemaker_Explained.txt
 /doc/acls.html
 /fencing
 /lrmd
 /mcp
 /pacemaker-*.spec
 /pengine
 
 #Other 
 coverity-*
 logs
 *.patch
 *.diff
 *.sed
 *.orig
 *.rej
 *.swp
diff --git a/maint/Makefile.am b/maint/Makefile.am
index ef8e9f25f7..11e4dd1f8f 100644
--- a/maint/Makefile.am
+++ b/maint/Makefile.am
@@ -1,115 +1,116 @@
 #
 # Copyright 2019 the Pacemaker project contributors
 #
 # The version control history for this file may have further details.
 #
 # This source code is licensed under the GNU General Public License version 2
 # or later (GPLv2+) WITHOUT ANY WARRANTY.
 #
 
 TESTCC_TARGETS          = testcc_common_acl_h testcc_common_ipc_h \
     testcc_common_iso8601_h testcc_common_mainloop_h testcc_common_nvpair_h \
     testcc_common_results_h testcc_common_util_h testcc_common_xml_h \
     testcc_compatibility_h testcc_pengine_common_h testcc_pengine_complex_h \
     testcc_pe_types_h testcc_cib_types_h testcc_cib_util_h testcc_crm_h \
     testcc_cib_h testcc_cluster_h testcc_lrmd_h testcc_msg_xml_h \
     testcc_services_h testcc_stonith_ng_h testcc_pengine_status_h \
-    testcc_pengine_rules_h
-CLEANFILES		= $(TESTCC_TARGETS)
+    testcc_pengine_rules_h testcc_common_logging_h
+CLEANFILES		= $(TESTCC_TARGETS) testcc_helper.cc
 
 EXTRA_SCRIPTS		= bumplibs.sh				\
 			  travisci_build_coverity_scan.sh
 EXTRA_PROGRAMS		= $(TESTCC_TARGETS)
 EXTRA_DIST		= README
 
+testcc_helper.cc:
+	echo "int main() { return 0; }" > $@
+
 nodist_testcc_common_acl_h_SOURCES = testcc_helper.cc
 testcc_common_acl_h_CXXFLAGS = -include "crm/common/acl.h"
 
 nodist_testcc_common_ipc_h_SOURCES = testcc_helper.cc
 testcc_common_ipc_h_CXXFLAGS = -include "crm/common/ipc.h"
 
 nodist_testcc_common_iso8601_h_SOURCES = testcc_helper.cc
 testcc_common_iso8601_h_CXXFLAGS = -include "crm/common/iso8601.h"
 
 nodist_testcc_common_mainloop_h_SOURCES = testcc_helper.cc
 testcc_common_mainloop_h_CXXFLAGS = -include "crm/common/mainloop.h"
 
 nodist_testcc_common_nvpair_h_SOURCES = testcc_helper.cc
 testcc_common_nvpair_h_CXXFLAGS = -include "crm/common/nvpair.h"
 
 nodist_testcc_common_results_h_SOURCES = testcc_helper.cc
 testcc_common_results_h_CXXFLAGS = -include "crm/common/results.h"
 
 nodist_testcc_common_util_h_SOURCES = testcc_helper.cc
 testcc_common_util_h_CXXFLAGS = -include "crm/common/util.h"
 
 nodist_testcc_common_xml_h_SOURCES = testcc_helper.cc
 testcc_common_xml_h_CXXFLAGS = -include "crm/common/xml.h"
 
 nodist_testcc_compatibility_h_SOURCES = testcc_helper.cc
 testcc_compatibility_h_CXXFLAGS = -include "crm/compatibility.h"
 
 nodist_testcc_pengine_common_h_SOURCES = testcc_helper.cc
 testcc_pengine_common_h_CXXFLAGS = -include "crm/pengine/common.h"
 
 nodist_testcc_pengine_complex_h_SOURCES = testcc_helper.cc
 testcc_pengine_complex_h_CXXFLAGS = -include "crm/pengine/complex.h"
 
 nodist_testcc_pe_types_h_SOURCES = testcc_helper.cc
 testcc_pe_types_h_CXXFLAGS = -include "crm/pengine/pe_types.h"
 
 nodist_testcc_cib_types_h_SOURCES = testcc_helper.cc
 testcc_cib_types_h_CXXFLAGS = -include "crm/cib/cib_types.h"
 
 nodist_testcc_cib_util_h_SOURCES = testcc_helper.cc
 testcc_cib_util_h_CXXFLAGS = -include "crm/cib/util.h"
 
-# the initial ones except election.h not packaged
+nodist_testcc_common_logging_h_SOURCES = testcc_helper.cc
+testcc_common_logging_h_CXXFLAGS = -include "crm/common/logging.h"
+
+# ones previously in testcc.cc except election.h not packaged
 
 nodist_testcc_crm_h_SOURCES = testcc_helper.cc
 testcc_crm_h_CXXFLAGS = -include "crm/crm.h"
 
 nodist_testcc_cib_h_SOURCES = testcc_helper.cc
 testcc_cib_h_CXXFLAGS = -include "crm/cib.h"
 
 nodist_testcc_cluster_h_SOURCES = testcc_helper.cc
 testcc_cluster_h_CXXFLAGS = -include "crm/cluster.h"
 
 nodist_testcc_lrmd_h_SOURCES = testcc_helper.cc
 testcc_lrmd_h_CXXFLAGS = -include "crm/lrmd.h"
 
 nodist_testcc_msg_xml_h_SOURCES = testcc_helper.cc
 testcc_msg_xml_h_CXXFLAGS = -include "crm/msg_xml.h"
 
 nodist_testcc_services_h_SOURCES = testcc_helper.cc
 testcc_services_h_CXXFLAGS = -include "crm/services.h"
 
 nodist_testcc_stonith_ng_h_SOURCES = testcc_helper.cc
 testcc_stonith_ng_h_CXXFLAGS = -include "crm/stonith-ng.h"
 
 nodist_testcc_pengine_status_h_SOURCES = testcc_helper.cc
 testcc_pengine_status_h_CXXFLAGS = -include "crm/pengine/status.h"
 
 nodist_testcc_pengine_rules_h_SOURCES = testcc_helper.cc
 testcc_pengine_rules_h_CXXFLAGS = -include "crm/pengine/rules.h"
 
-# headers not pulling in everything they need
-
-nodist_testcc_common_logging_h_SOURCES = testcc_helper.cc
-testcc_common_logging_h_CXXFLAGS = -include "crm/common/logging.h"
-
 # c++-headers but not packaged
 # daemons/controld/controld_membership.h
 # include/crm/pengine/remote_internal.h
 # include/crm/common/cmdline_internal.h
 # include/crm/common/output.h
 # include/crm/common/ipcs_internal.h
 # include/crm/common/attrd_internal.h
 # include/pacemaker.h
 # include/pcmki/pcmki_output.h
 # include/pcmki/pcmki_transition.h
 # include/crm/cluster/election.h
 # lib/gnu/md5.h
 # tools/crm_resource_controller.h
 
 testcc: $(TESTCC_TARGETS)
diff --git a/maint/testcc_helper.cc b/maint/testcc_helper.cc
deleted file mode 100644
index 031a74e1c1..0000000000
--- a/maint/testcc_helper.cc
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- * Copyright 2019 the Pacemaker project contributors
- *
- * The version control history for this file may have further details.
- *
- * This source code is licensed under the GNU Lesser General Public License
- * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY.
- */
-
-int main()
-{
-    return 0;
-}