diff --git a/include/grenade/common/graph.h b/include/grenade/common/graph.h
index 1cdd8a32a12a33ba83c49bf3e77689656f0a2c8e..516bd037d9158057fe2ad8e7865b42967c4967bc 100644
--- a/include/grenade/common/graph.h
+++ b/include/grenade/common/graph.h
@@ -1,10 +1,10 @@
 #pragma once
 #include "grenade/common/detail/constructor_transform.h"
 #include "grenade/common/detail/graph.h"
-#include "grenade/common/detail/property_holder.h"
 #include "grenade/common/edge_on_graph.h"
 #include "grenade/common/genpybind.h"
 #include "grenade/common/property.h"
+#include "grenade/common/property_holder.h"
 #include "grenade/common/vertex_on_graph.h"
 #include "hate/visibility.h"
 #include <memory>
@@ -360,8 +360,8 @@ struct SYMBOL_VISIBLE GENPYBIND(visible) Graph
 
 private:
 	Backend m_graph;
-	std::unordered_map<VertexDescriptor, detail::PropertyHolder<Vertex, Holder>> m_vertices;
-	std::unordered_map<EdgeDescriptor, detail::PropertyHolder<Edge, Holder>> m_edges;
+	std::unordered_map<VertexDescriptor, PropertyHolder<Vertex, Holder>> m_vertices;
+	std::unordered_map<EdgeDescriptor, PropertyHolder<Edge, Holder>> m_edges;
 
 	void check_contains(VertexDescriptor const& descriptor, char const* description) const;
 	void check_contains(EdgeDescriptor const& descriptor, char const* description) const;
diff --git a/include/grenade/common/detail/property_holder.h b/include/grenade/common/property_holder.h
similarity index 95%
rename from include/grenade/common/detail/property_holder.h
rename to include/grenade/common/property_holder.h
index d4c419a3666ef6a8944e66b76f38d47085dd6369..237128d7ef911d7ed1d46a1a5f474791813bc23e 100644
--- a/include/grenade/common/detail/property_holder.h
+++ b/include/grenade/common/property_holder.h
@@ -4,7 +4,7 @@
 #include <memory>
 #include <type_traits>
 
-namespace grenade::common::detail {
+namespace grenade::common {
 
 /**
  * Holder type for polymorphic property.
@@ -108,6 +108,6 @@ private:
 template <typename T, template <typename...> typename Backend>
 std::ostream& operator<<(std::ostream& os, PropertyHolder<T, Backend> const& value);
 
-} // namespace grenade::common::detail
+} // namespace grenade::common
 
-#include "grenade/common/detail/property_holder.tcc"
+#include "grenade/common/property_holder.tcc"
diff --git a/include/grenade/common/detail/property_holder.tcc b/include/grenade/common/property_holder.tcc
similarity index 95%
rename from include/grenade/common/detail/property_holder.tcc
rename to include/grenade/common/property_holder.tcc
index e92d14c497615abd4cd4a8fa1b7d13ea4e6695c6..d527c6ed14392db03cf7e37b52f4fc2ce0b14c65 100644
--- a/include/grenade/common/detail/property_holder.tcc
+++ b/include/grenade/common/property_holder.tcc
@@ -1,9 +1,9 @@
 #pragma once
-#include "grenade/common/detail/property_holder.h"
+#include "grenade/common/property_holder.h"
 #include <ostream>
 #include <stdexcept>
 
-namespace grenade::common::detail {
+namespace grenade::common {
 
 template <typename T, template <typename...> typename Backend>
 PropertyHolder<T, Backend>::PropertyHolder(T const& value) : m_backend(value.copy())
@@ -86,4 +86,4 @@ std::ostream& operator<<(std::ostream& os, PropertyHolder<T, Backend> const& val
 	return os << *value;
 }
 
-} // namespace grenade::common::detail
+} // namespace grenade::common
diff --git a/include/grenade/vx/network/abstract/multicompartment_compartment.h b/include/grenade/vx/network/abstract/multicompartment_compartment.h
index 68871fd66b947784b78c8f175e149c04bca09c8c..1bdcd25e3ef70dedf24adbfd79fe00edfb705d57 100644
--- a/include/grenade/vx/network/abstract/multicompartment_compartment.h
+++ b/include/grenade/vx/network/abstract/multicompartment_compartment.h
@@ -1,9 +1,9 @@
 #pragma once
 
 #include "grenade/common/detail/graph.h"
-#include "grenade/common/detail/property_holder.h"
 #include "grenade/common/graph.h"
 #include "grenade/common/property.h"
+#include "grenade/common/property_holder.h"
 #include "grenade/vx/genpybind.h"
 #include "grenade/vx/network/abstract/multicompartment_hardware_resource_with_constraint.h"
 #include "grenade/vx/network/abstract/multicompartment_mechanism.h"
@@ -42,7 +42,7 @@ protected:
 private:
 	size_t m_mechanism_key_counter = 0;
 	// Map over all Mechanisms on a Compartment
-	std::map<MechanismOnCompartment, common::detail::PropertyHolder<Mechanism>> m_mechanisms;
+	std::map<MechanismOnCompartment, common::PropertyHolder<Mechanism>> m_mechanisms;
 };
 
 } // namespace abstract
diff --git a/include/grenade/vx/network/abstract/multicompartment_environment.h b/include/grenade/vx/network/abstract/multicompartment_environment.h
index b90781089ca0c378db9c167fb54e1becf1cab37d..e782408b5dc2d680facc18bec81f1882e244b3c3 100644
--- a/include/grenade/vx/network/abstract/multicompartment_environment.h
+++ b/include/grenade/vx/network/abstract/multicompartment_environment.h
@@ -1,6 +1,6 @@
 #pragma once
 
-#include "grenade/common/detail/property_holder.h"
+#include "grenade/common/property_holder.h"
 #include "grenade/vx/network/abstract/multicompartment_compartment_on_neuron.h"
 #include "grenade/vx/network/abstract/multicompartment_synaptic_input_environment.h"
 #include <map>
@@ -10,9 +10,7 @@ namespace abstract GENPYBIND_TAG_GRENADE_VX_NETWORK {
 
 struct GENPYBIND(visible) SYMBOL_VISIBLE Environment
 {
-	std::map<
-	    CompartmentOnNeuron,
-	    std::vector<common::detail::PropertyHolder<SynapticInputEnvironment>>>
+	std::map<CompartmentOnNeuron, std::vector<common::PropertyHolder<SynapticInputEnvironment>>>
 	    synaptic_connections;
 };
 
diff --git a/include/grenade/vx/network/abstract/multicompartment_hardware_constraint.h b/include/grenade/vx/network/abstract/multicompartment_hardware_constraint.h
index b74a3bf912162e62d898ed116178535c524fe714..7accb89d38f00ba0d9b4be22efcffaa66a62311c 100644
--- a/include/grenade/vx/network/abstract/multicompartment_hardware_constraint.h
+++ b/include/grenade/vx/network/abstract/multicompartment_hardware_constraint.h
@@ -10,7 +10,7 @@ namespace grenade::vx::network::abstract {
 struct SYMBOL_VISIBLE HardwareConstraint : common::Property<HardwareConstraint>
 {
 	NumberTopBottom numbers;
-	common::detail::PropertyHolder<HardwareResource> resource;
+	common::PropertyHolder<HardwareResource> resource;
 
 	// Property Methods
 	std::unique_ptr<HardwareConstraint> copy() const;
diff --git a/include/grenade/vx/network/abstract/multicompartment_hardware_resource.h b/include/grenade/vx/network/abstract/multicompartment_hardware_resource.h
index a98bdd0febe3e7c745314659456728a3ef7f7510..86a2da98e1400b8ea4a0c7f0ec9c15a332c8f10a 100644
--- a/include/grenade/vx/network/abstract/multicompartment_hardware_resource.h
+++ b/include/grenade/vx/network/abstract/multicompartment_hardware_resource.h
@@ -1,8 +1,8 @@
 #pragma once
 
-#include "grenade/common/detail/property_holder.h"
 #include "grenade/common/empty_property.h"
 #include "grenade/common/property.h"
+#include "grenade/common/property_holder.h"
 
 namespace grenade::vx::network::abstract {
 
diff --git a/include/grenade/vx/network/abstract/multicompartment_hardware_resource_with_constraint.h b/include/grenade/vx/network/abstract/multicompartment_hardware_resource_with_constraint.h
index a477e8b3a9a843532881b704fe62357759c45c38..9dbfb1b6c66f0a3e43ae3cff5ae2d861f5a2901f 100644
--- a/include/grenade/vx/network/abstract/multicompartment_hardware_resource_with_constraint.h
+++ b/include/grenade/vx/network/abstract/multicompartment_hardware_resource_with_constraint.h
@@ -1,6 +1,6 @@
 #pragma once
 
-#include "grenade/common/detail/property_holder.h"
+#include "grenade/common/property_holder.h"
 #include "grenade/vx/network/abstract/multicompartment_hardware_constraint.h"
 #include "grenade/vx/network/abstract/multicompartment_hardware_resource.h"
 #include <vector>
@@ -9,8 +9,8 @@ namespace grenade::vx::network::abstract {
 
 struct SYMBOL_VISIBLE HardwareResourcesWithConstraints
 {
-	std::vector<common::detail::PropertyHolder<HardwareResource>> resources;
-	std::vector<common::detail::PropertyHolder<HardwareConstraint>> constraints;
+	std::vector<common::PropertyHolder<HardwareResource>> resources;
+	std::vector<common::PropertyHolder<HardwareConstraint>> constraints;
 };
 
 
diff --git a/include/grenade/vx/network/abstract/multicompartment_resource_manager.h b/include/grenade/vx/network/abstract/multicompartment_resource_manager.h
index 19f1d7b79925915217ce88e7960409260931b154..394035802a180147956f0413cc9854d184e6df94 100644
--- a/include/grenade/vx/network/abstract/multicompartment_resource_manager.h
+++ b/include/grenade/vx/network/abstract/multicompartment_resource_manager.h
@@ -1,6 +1,6 @@
 #pragma once
 
-#include "grenade/common/detail/property_holder.h"
+#include "grenade/common/property_holder.h"
 #include "grenade/vx/network/abstract/multicompartment_compartment_on_neuron.h"
 #include "grenade/vx/network/abstract/multicompartment_environment.h"
 #include "grenade/vx/network/abstract/multicompartment_hardware_resource/capacitance.h"
@@ -24,7 +24,7 @@ struct GENPYBIND(visible) SYMBOL_VISIBLE ResourceManager
 	NumberTopBottom const& get_config(CompartmentOnNeuron const& compartment) const;
 
 private:
-	std::map<CompartmentOnNeuron, common::detail::PropertyHolder<NumberTopBottom>> resource_map;
+	std::map<CompartmentOnNeuron, common::PropertyHolder<NumberTopBottom>> resource_map;
 };
 
 
diff --git a/src/grenade/vx/network/abstract/multicompartment_mechanism/capacitance.cpp b/src/grenade/vx/network/abstract/multicompartment_mechanism/capacitance.cpp
index f3bc8ffa3b1fdde88aa61e84822a9447aadb91dc..7bad4995aa0bf4a3ddf7d72a6e93d15ccc86a1d8 100644
--- a/src/grenade/vx/network/abstract/multicompartment_mechanism/capacitance.cpp
+++ b/src/grenade/vx/network/abstract/multicompartment_mechanism/capacitance.cpp
@@ -25,7 +25,7 @@ HardwareResourcesWithConstraints MechanismCapacitance::get_hardware(
 {
 	double capacity_convert = 5; // TO-DO
 	HardwareResourcesWithConstraints resources_with_constraints;
-	std::vector<common::detail::PropertyHolder<HardwareResource>> resource_list;
+	std::vector<common::PropertyHolder<HardwareResource>> resource_list;
 
 	double capacitance_model = parameter_space.capacitance_interval.get_upper();
 	int num_of_hardware_resources;
diff --git a/src/grenade/vx/network/abstract/multicompartment_mechanism/synaptic_conductance.cpp b/src/grenade/vx/network/abstract/multicompartment_mechanism/synaptic_conductance.cpp
index 06999dc790720669a1f17dad4ff0132ee9a33259..69d956e938ac864b6c4f3a50d8c3ee06ba7bf97f 100644
--- a/src/grenade/vx/network/abstract/multicompartment_mechanism/synaptic_conductance.cpp
+++ b/src/grenade/vx/network/abstract/multicompartment_mechanism/synaptic_conductance.cpp
@@ -38,13 +38,13 @@ HardwareResourcesWithConstraints MechanismSynapticInputConductance::get_hardware
 {
 	// Return Object and Input
 	HardwareResourcesWithConstraints resources_with_constraints;
-	std::vector<common::detail::PropertyHolder<HardwareResource>> resource_list;
-	std::vector<common::detail::PropertyHolder<HardwareConstraint>> constraint_list;
+	std::vector<common::PropertyHolder<HardwareResource>> resource_list;
+	std::vector<common::PropertyHolder<HardwareConstraint>> constraint_list;
 	if (environment.synaptic_connections.find(compartment) ==
 	    environment.synaptic_connections.end()) {
 		throw std::invalid_argument(" No information about this compartment in environment");
 	}
-	std::vector<common::detail::PropertyHolder<SynapticInputEnvironment>> synaptic_inputs =
+	std::vector<common::PropertyHolder<SynapticInputEnvironment>> synaptic_inputs =
 	    environment.synaptic_connections.at(compartment);
 
 	// Loop over all Synaptic Inputs of Compartment
diff --git a/src/grenade/vx/network/abstract/multicompartment_mechanism/synaptic_current.cpp b/src/grenade/vx/network/abstract/multicompartment_mechanism/synaptic_current.cpp
index 1df1e2b04166cc8735814b36eff38514726a05ce..e7b9f180a196444df8dc40231718abb2133d9548 100644
--- a/src/grenade/vx/network/abstract/multicompartment_mechanism/synaptic_current.cpp
+++ b/src/grenade/vx/network/abstract/multicompartment_mechanism/synaptic_current.cpp
@@ -36,13 +36,13 @@ HardwareResourcesWithConstraints MechanismSynapticInputCurrent::get_hardware(
 {
 	// Return Object and Input
 	HardwareResourcesWithConstraints resources_with_constraints;
-	std::vector<common::detail::PropertyHolder<HardwareResource>> resource_list;
-	std::vector<common::detail::PropertyHolder<HardwareConstraint>> constraint_list;
+	std::vector<common::PropertyHolder<HardwareResource>> resource_list;
+	std::vector<common::PropertyHolder<HardwareConstraint>> constraint_list;
 	if (environment.synaptic_connections.find(compartment) ==
 	    environment.synaptic_connections.end()) {
 		throw std::invalid_argument(" No information about this compartment in environment");
 	}
-	std::vector<common::detail::PropertyHolder<SynapticInputEnvironment>> synaptic_inputs =
+	std::vector<common::PropertyHolder<SynapticInputEnvironment>> synaptic_inputs =
 	    environment.synaptic_connections.at(compartment);
 
 	// Loop over all Synaptic Inputs of Compartment
diff --git a/src/grenade/vx/network/abstract/multicompartment_resource_manager_.cpp b/src/grenade/vx/network/abstract/multicompartment_resource_manager_.cpp
index d143acb902998d21fec2356ebb13b7b387e3f0ea..47be7cc8c122f7bd569c30c75bdc226fe54fa910 100644
--- a/src/grenade/vx/network/abstract/multicompartment_resource_manager_.cpp
+++ b/src/grenade/vx/network/abstract/multicompartment_resource_manager_.cpp
@@ -15,10 +15,9 @@ CompartmentOnNeuron ResourceManager::add_config(
 	NumberTopBottom neuron_circuit_config;
 	// Two Vectors to count Requestes Resources to find maximum later (Vectors instead of map since
 	// PropertyHolder is neither comparable nor hashable)
-	std::vector<common::detail::PropertyHolder<HardwareResource>>
-	    resource_request_counter_hardware = {
-	        HardwareResourceCapacity(), HardwareResourceSynapticInputExitatory(),
-	        HardwareResourceSynapticInputInhibitory()};
+	std::vector<common::PropertyHolder<HardwareResource>> resource_request_counter_hardware = {
+	    HardwareResourceCapacity(), HardwareResourceSynapticInputExitatory(),
+	    HardwareResourceSynapticInputInhibitory()};
 	std::vector<NumberTopBottom> resource_request_counter_numbers = {
 	    NumberTopBottom(0, 0, 0), NumberTopBottom(0, 0, 0), NumberTopBottom(0, 0, 0)};
 
diff --git a/tests/sw/grenade/common/test-property_holder.cpp b/tests/sw/grenade/common/test-property_holder.cpp
index 4bd49c16a6eabb8a82d73b5db47ea6b3e6e2858e..4412eb14ee9efd5f5a7e7ee9a82ce2dbf5e9e8fe 100644
--- a/tests/sw/grenade/common/test-property_holder.cpp
+++ b/tests/sw/grenade/common/test-property_holder.cpp
@@ -1,4 +1,4 @@
-#include "grenade/common/detail/property_holder.h"
+#include "grenade/common/property_holder.h"
 
 #include "grenade/common/empty_property.h"
 #include "grenade/common/property.h"
@@ -42,7 +42,7 @@ protected:
 TEST(PropertyHolder, General)
 {
 	DerivedDummyProperty derived_dummy_5{5};
-	grenade::common::detail::PropertyHolder<DummyProperty> holder_5(derived_dummy_5);
+	grenade::common::PropertyHolder<DummyProperty> holder_5(derived_dummy_5);
 
 	EXPECT_TRUE(holder_5);
 	EXPECT_NO_THROW(*holder_5);
@@ -63,7 +63,7 @@ TEST(PropertyHolder, General)
 	EXPECT_EQ(holder_5, holder_5);
 
 	DerivedDummyProperty derived_dummy_7{7};
-	grenade::common::detail::PropertyHolder<DummyProperty> holder_7(std::move(derived_dummy_7));
+	grenade::common::PropertyHolder<DummyProperty> holder_7(std::move(derived_dummy_7));
 
 	auto const holder_7_copy = holder_7;
 
diff --git a/tests/sw/grenade/vx/network/abstract/test-multicompartment_resources.cpp b/tests/sw/grenade/vx/network/abstract/test-multicompartment_resources.cpp
index 77e46890d5a65d69005582a0c9a863c87238bc23..cac585f9bf28f3396101fcc96db1f5b4e3b3900c 100644
--- a/tests/sw/grenade/vx/network/abstract/test-multicompartment_resources.cpp
+++ b/tests/sw/grenade/vx/network/abstract/test-multicompartment_resources.cpp
@@ -83,7 +83,7 @@ TEST(multicompartment_neuron, Resources)
 	SynapticInputEnvironmentCurrent synaptic_input_current_a(true, 128);
 	SynapticInputEnvironmentCurrent synaptic_input_current_b(false, 512);
 
-	std::vector<grenade::common::detail::PropertyHolder<SynapticInputEnvironment>>
+	std::vector<grenade::common::PropertyHolder<SynapticInputEnvironment>>
 	    synaptic_input_on_compartment_a = {synaptic_input_current_a, synaptic_input_current_b};
 	environment.synaptic_connections.emplace(
 	    compartment_a_on_neuron, synaptic_input_on_compartment_a);
@@ -92,7 +92,7 @@ TEST(multicompartment_neuron, Resources)
 	SynapticInputEnvironmentConductance synaptic_input_conductance_b(
 	    true, NumberTopBottom(200, 100, 0));
 
-	std::vector<grenade::common::detail::PropertyHolder<SynapticInputEnvironment>>
+	std::vector<grenade::common::PropertyHolder<SynapticInputEnvironment>>
 	    synaptic_input_on_compartment_b = {
 	        synaptic_input_conductance_a, synaptic_input_conductance_b};
 	environment.synaptic_connections.emplace(