diff --git a/attn/attn_config.cpp b/attn/attn_config.cpp
index caee221..e2d4a72 100644
--- a/attn/attn_config.cpp
+++ b/attn/attn_config.cpp
@@ -4,10 +4,9 @@
 {
 
 /** @brief Main constructor */
-Config::Config(bool i_vital, bool i_checkstop, bool i_terminate,
-               bool i_breakpoints)
+Config::Config()
 {
-    setConfig(i_vital, i_checkstop, i_terminate, i_breakpoints);
+    setFlagAll();
 }
 
 /** @brief Get state of flag */
@@ -22,26 +21,28 @@
     iv_flags.set(i_flag);
 }
 
+/** @brief Set all configuration flags */
+void Config::setFlagAll()
+{
+    iv_flags.set(enVital);
+    iv_flags.set(enCheckstop);
+    iv_flags.set(enTerminate);
+    iv_flags.set(enBreakpoints);
+}
+
 /** @brief Clear configuration flag */
 void Config::clearFlag(AttentionFlag i_flag)
 {
     iv_flags.reset(i_flag);
 }
 
-/** @brief Set state of all configuration data */
-void Config::setConfig(bool i_vital, bool i_checkstop, bool i_terminate,
-                       bool i_breakpoints)
+/** @brief Clear all configuration flags */
+void Config::clearFlagAll()
 {
-    (true == i_vital) ? iv_flags.set(enVital) : iv_flags.reset(enVital);
-
-    (true == i_checkstop) ? iv_flags.set(enCheckstop)
-                          : iv_flags.reset(enCheckstop);
-
-    (true == i_terminate) ? iv_flags.set(enTerminate)
-                          : iv_flags.reset(enTerminate);
-
-    (true == i_breakpoints) ? iv_flags.set(enBreakpoints)
-                            : iv_flags.reset(enBreakpoints);
+    iv_flags.reset(enVital);
+    iv_flags.reset(enCheckstop);
+    iv_flags.reset(enTerminate);
+    iv_flags.reset(enBreakpoints);
 }
 
 } // namespace attn
diff --git a/attn/attn_config.hpp b/attn/attn_config.hpp
index ec8013b..32f885e 100644
--- a/attn/attn_config.hpp
+++ b/attn/attn_config.hpp
@@ -19,20 +19,7 @@
 {
   public: // methods
     /** @brief Default constructor */
-    Config() = delete;
-
-    /** @brief Crate configuration object
-     *
-     * Create a configuration object to hold the attention handler
-     * configuration data
-     *
-     * @param i_vital       Enable vital attention handling
-     * @param i_checkstop   Enable checkstop attention handling
-     * @param i_terminate   Enable TI attention handling
-     * @param i_+breakpoint Enable breakpoint attention handling
-     */
-    Config(bool i_vital, bool i_checkstop, bool i_terminate,
-           bool i_breakpoints);
+    Config();
 
     /** @brief Default destructor */
     ~Config() = default;
@@ -43,9 +30,15 @@
     /** @brief Set configuration flag */
     void setFlag(AttentionFlag i_flag);
 
+    /** @brief Set all configuration flags */
+    void setFlagAll();
+
     /** @brief Clear configuration flag */
     void clearFlag(AttentionFlag i_flag);
 
+    /** @brief Clear all configuration flags */
+    void clearFlagAll();
+
     /** @brief Set state of all configuration data */
     void setConfig(bool i_vital, bool i_checkstop, bool i_terminate,
                    bool i_breakpoints);
diff --git a/cli.cpp b/cli.cpp
index 4ace713..3fcff3a 100644
--- a/cli.cpp
+++ b/cli.cpp
@@ -1,3 +1,5 @@
+#include <attn/attn_config.hpp>
+
 #include <algorithm>
 #include <string>
 
@@ -15,8 +17,7 @@
 }
 
 /** @brief Parse command line for configuration flags */
-void parseConfig(char** i_begin, char** i_end, bool& o_vital, bool& o_checkstop,
-                 bool& o_terminate, bool& o_breakpoints)
+void parseConfig(char** i_begin, char** i_end, attn::Config* o_config)
 {
     char* setting;
 
@@ -26,18 +27,12 @@
     {
         if (std::string("off") == setting)
         {
-            o_vital       = false;
-            o_checkstop   = false;
-            o_terminate   = false;
-            o_breakpoints = false;
+            o_config->clearFlagAll();
         }
 
         if (std::string("on") == setting)
         {
-            o_vital       = true;
-            o_checkstop   = true;
-            o_terminate   = true;
-            o_breakpoints = true;
+            o_config->setFlagAll();
         }
     }
     // Parse individual options
@@ -46,41 +41,41 @@
         setting = getCliSetting(i_begin, i_end, "--vital");
         if (std::string("off") == setting)
         {
-            o_vital = false;
+            o_config->clearFlag(attn::enVital);
         }
         if (std::string("on") == setting)
         {
-            o_vital = true;
+            o_config->setFlag(attn::enVital);
         }
 
         setting = getCliSetting(i_begin, i_end, "--checkstop");
         if (std::string("off") == setting)
         {
-            o_checkstop = false;
+            o_config->clearFlag(attn::enCheckstop);
         }
         if (std::string("on") == setting)
         {
-            o_checkstop = true;
+            o_config->setFlag(attn::enCheckstop);
         }
 
         setting = getCliSetting(i_begin, i_end, "--terminate");
         if (std::string("off") == setting)
         {
-            o_terminate = false;
+            o_config->clearFlag(attn::enTerminate);
         }
         if (std::string("on") == setting)
         {
-            o_terminate = true;
+            o_config->setFlag(attn::enTerminate);
         }
 
         setting = getCliSetting(i_begin, i_end, "--breakpoints");
         if (std::string("off") == setting)
         {
-            o_breakpoints = false;
+            o_config->clearFlag(attn::enBreakpoints);
         }
         if (std::string("on") == setting)
         {
-            o_breakpoints = true;
+            o_config->setFlag(attn::enBreakpoints);
         }
     }
 }
diff --git a/cli.hpp b/cli.hpp
index f046b8c..6ae4e63 100644
--- a/cli.hpp
+++ b/cli.hpp
@@ -1,5 +1,7 @@
 #pragma once
 
+#include <attn/attn_config.hpp>
+
 #include <string>
 
 /*
@@ -28,12 +30,11 @@
  *
  * @brief Get configuration flags from command line
  *
+ * Parse the command line for configuration options and update the
+ * attention handler configuration object as needed.
+ *
  * @param i_begin       command line args vector begin
  * @param i_end         command line args vector end
- * @param i_vital       vital handler enable option
- * @param i_checkatop   checkstop handler enable option
- * @param i_terminate   TI handler enable option
- * @param i_breakpoints breakpoint handler enable option
+ * @param o_config      pointer to attention handler configuration object
  */
-void parseConfig(char** i_begin, char** i_end, bool& i_vital, bool& i_checkstop,
-                 bool& i_terminate, bool& i_breakpoints);
+void parseConfig(char** i_begin, char** i_end, attn::Config* o_config);
diff --git a/listener.cpp b/listener.cpp
index c8ae642..e0640aa 100644
--- a/listener.cpp
+++ b/listener.cpp
@@ -39,10 +39,6 @@
 {
     using namespace boost::interprocess;
 
-    // convert thread params to main arguments
-    int argc    = static_cast<MainArgs_t*>(i_params)->argc;
-    char** argv = static_cast<MainArgs_t*>(i_params)->argv;
-
     // vector to hold messages sent to listener
     std::vector<std::string> messages;
 
@@ -55,19 +51,8 @@
     // status of gpio monitor
     bool gpioMonEnabled = false;
 
-    // Parse command line args to see if any flags were passed, update the
-    // booleans accordingly and pass them to the config object constructor.
-    bool vital_enable     = true;
-    bool checkstop_enable = true;
-    bool ti_enable        = true;
-    bool bp_enable        = true;
-
-    // parse config options
-    parseConfig(argv, argv + argc, vital_enable, checkstop_enable, ti_enable,
-                bp_enable);
-
     // create config
-    attn::Config config(vital_enable, checkstop_enable, ti_enable, bp_enable);
+    attn::Config attnConfig;
 
     // initialize pdbg targets
     pdbg_targets_init(nullptr);
@@ -124,12 +109,7 @@
             }
 
             // parse config options
-            parseConfig(argv.data(), argv.data() + argc, vital_enable,
-                        checkstop_enable, ti_enable, bp_enable);
-
-            // set config
-            config.setConfig(vital_enable, checkstop_enable, ti_enable,
-                             bp_enable);
+            parseConfig(argv.data(), argv.data() + argc, &attnConfig);
 
             // start attention handler daemon?
             if (true ==
@@ -138,7 +118,7 @@
                 if (false == gpioMonEnabled)
                 {
                     if (0 == pthread_create(&ptidGpio, NULL, &threadGpioMon,
-                                            &config))
+                                            &attnConfig))
                     {
                         gpioMonEnabled = true;
                     }
diff --git a/test/end2end/main.cpp b/test/end2end/main.cpp
index fe637f6..c523842 100644
--- a/test/end2end/main.cpp
+++ b/test/end2end/main.cpp
@@ -9,24 +9,17 @@
 {
     int rc = 0; // return code
 
-    // attention handler configuration flags
-    bool vital_enable     = true;
-    bool checkstop_enable = true;
-    bool ti_enable        = true;
-    bool bp_enable        = true;
-
     // initialize pdbg targets
     pdbg_targets_init(nullptr);
 
-    // convert cmd line args to config values
-    parseConfig(argv, argv + argc, vital_enable, checkstop_enable, ti_enable,
-                bp_enable);
-
     // create attention handler config object
-    attn::Config config(vital_enable, checkstop_enable, ti_enable, bp_enable);
+    attn::Config attnConfig;
+
+    // convert cmd line args to config values
+    parseConfig(argv, argv + argc, &attnConfig);
 
     // exercise attention gpio event path
-    attn::attnHandler(&config);
+    attn::attnHandler(&attnConfig);
 
     return rc;
 }
