 +class Tool;
 +}
  
- namespace ord {
- 
-@@ -134,6 +137,8 @@ public:
-   psm::PDNSim* getPDNSim() { return pdnsim_; }
-   grt::GlobalRouter* getFastRoute() { return fastRoute_; }
-   antenna_checker::AntennaChecker *getAntennaChecker(){ return antennaChecker_; }
+ namespace par {
+ class PartitionMgr;
+@@ -183,6 +186,7 @@ public:
+   pdn::PdnGen *getPdnGen() { return pdngen_; }
+   dst::Distributed *getDistributed() { return distributer_; }
+   stt::SteinerTreeBuilder *getSteinerTreeBuilder() { return stt_builder_; }
 +  tool::Tool *getTool(){ return tool_; }
-+
+ 
    // Return the bounding box of the db rows.
    odb::Rect getCore();
-   // Return true if the command units have been initialized.
-@@ -205,6 +210,7 @@ private:
- #endif
-   replace::Replace *replace_;
-   psm::PDNSim *pdnsim_; 
+@@ -276,6 +280,7 @@ private:
+   pdn::PdnGen *pdngen_;
+   dst::Distributed *distributer_;
+   stt::SteinerTreeBuilder *stt_builder_;
 +  tool::Tool *tool_;
  
    std::set<Observer *> observers_;
  
 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
-index a39167a0..e8b2a8b5 100755
+index 5a3f49c0d..7bc37144a 100755
 --- a/src/CMakeLists.txt
 +++ b/src/CMakeLists.txt
-@@ -32,7 +32,9 @@ set(OPENPHYSYN_HOME ${PROJECT_SOURCE_DIR}/src/OpenPhySyn)
- set(PDNSIM_HOME ${PROJECT_SOURCE_DIR}/src/PDNSim)
- set(ANTENNACHECKER_HOME ${PROJECT_SOURCE_DIR}/src/antennachecker)
- set(GUI_HOME ${PROJECT_SOURCE_DIR}/src/gui)
-+set(TOOL_HOME ${OPENROAD_HOME}/src/tool)
- 
-+set(OPENROAD_WRAP ${CMAKE_CURRENT_BINARY_DIR}/OpenRoad_wrap.cc)
- set(OPENROAD_TCL_INIT ${CMAKE_CURRENT_BINARY_DIR}/OpenRoadTclInitVar.cc)
- 
- set(OPENROAD_SOURCE
-@@ -235,6 +237,7 @@ if(BUILD_OPENPHYSYN)
-   add_subdirectory(OpenPhySyn)
- endif()
- add_subdirectory(gui)
+@@ -223,6 +223,7 @@ add_subdirectory(drt)
+ add_subdirectory(utl)
+ add_subdirectory(dst)
+ add_subdirectory(pdn)
 +add_subdirectory(tool)
  
  ################################################################
  
-@@ -272,6 +275,8 @@ target_include_directories(openroad
-   ${OPENRCX_HOME}/include
-   ${PDNSIM_HOME}/include
-   ${ANTENNACHECKER_HOME}/include
-+  ${TOOL_HOME}/include
-+
-   ${TCL_INCLUDE_PATH}
-   ${Boost_INCLUDE_DIRS}
-   )
-@@ -297,6 +302,7 @@ target_link_libraries(openroad
-   ParquetFP
-   ABKCommon
-   pdnsim
+@@ -283,6 +284,7 @@ target_link_libraries(openroad
+   par
+   utl
+   pdn
 +  tool
-   zlib
-   tm
-   defin
+   ${ABC_LIBRARY}
+   ${TCL_LIBRARY}
+   ${CMAKE_THREAD_LIBS_INIT}
 diff --git a/src/OpenRoad.cc b/src/OpenRoad.cc
-index 622aa11e..fff8e1a9 100755
+index d5e1a6ed9..f41608400 100755
 --- a/src/OpenRoad.cc
 +++ b/src/OpenRoad.cc
-@@ -70,6 +70,8 @@
-   #include "OpenPhySyn/MakeOpenPhySyn.hpp"
- #endif
+@@ -85,6 +85,8 @@
+ #include "dst/MakeDistributed.h"
+ #include "stt/MakeSteinerTreeBuilder.h"
  
 +#include "tool/MakeTool.hh"
 +
  namespace sta {
- extern const char *openroad_tcl_inits[];
+ extern const char *openroad_swig_tcl_inits[];
  }
-@@ -197,6 +199,7 @@ OpenRoad::init(Tcl_Interp *tcl_interp)
- #ifdef BUILD_OPENPHYSYN
-   psn_ = makePsn();
- #endif
+@@ -228,6 +230,7 @@ OpenRoad::init(Tcl_Interp *tcl_interp)
+   pdngen_ = makePdnGen();
+   distributer_ = makeDistributed();
+   stt_builder_ = makeSteinerTreeBuilder();
 +  tool_ = makeTool();
  
    // Init components.
-   Openroad_Init(tcl_interp);
-@@ -222,6 +225,7 @@ OpenRoad::init(Tcl_Interp *tcl_interp)
- #ifdef BUILD_OPENPHYSYN
-     initPsn(this);
- #endif
+   Openroad_swig_Init(tcl_interp);
+@@ -260,6 +263,7 @@ OpenRoad::init(Tcl_Interp *tcl_interp)
+   initPdnGen(this);
+   initDistributed(this);
+   initSteinerTreeBuilder(this);
 +  initTool(this);
  
    // Import exported commands to global namespace.
    Tcl_Eval(tcl_interp, "sta::define_sta_cmds");
 diff --git a/src/tool/.gitignore b/src/tool/.gitignore
 new file mode 100644
-index 00000000..f820cf94
+index 000000000..f820cf945
 --- /dev/null
 +++ b/src/tool/.gitignore
 @@ -0,0 +1 @@
 +test/results
 diff --git a/src/tool/CMakeLists.txt b/src/tool/CMakeLists.txt
 new file mode 100644
-index 00000000..9fe88f75
+index 000000000..c8396ce39
 --- /dev/null
 +++ b/src/tool/CMakeLists.txt
-@@ -0,0 +1,17 @@
+@@ -0,0 +1,45 @@
 +# Copyright (c) 2021, The Regents of the University of California
 +# All rights reserved.
 +# 

+Gotta flag1 true
diff --git a/src/tool/test/toolize1.tcl b/src/tool/test/toolize1.tcl
new file mode 100644
index 00000000..815688f9
--- /dev/null
+++ b/src/tool/test/toolize1.tcl
@@ -0,0 +1 @@

+# End:
diff --git a/src/tool/test/toolize1.ok b/src/tool/test/toolize1.ok
new file mode 100644
index 000000000..05857f023
--- /dev/null
+++ b/src/tool/test/toolize1.ok
@@ -0,0 +1,4 @@
