diff --git a/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/AmqpDriverAdapter.java b/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/AmqpDriverAdapter.java
index db9f93c3f..cba516a2e 100644
--- a/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/AmqpDriverAdapter.java
+++ b/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/AmqpDriverAdapter.java
@@ -24,7 +24,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.BaseDriverAdapter;
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter;
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/AmqpDriverAdapterLoader.java b/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/AmqpDriverAdapterLoader.java
index 0dd4aeca2..9570b863a 100644
--- a/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/AmqpDriverAdapterLoader.java
+++ b/adapter-amqp/src/main/java/io/nosqlbench/adapter/amqp/AmqpDriverAdapterLoader.java
@@ -20,7 +20,7 @@ package io.nosqlbench.adapter.amqp;
import io.nosqlbench.adapter.diag.DriverAdapterLoader;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
@Service(value = DriverAdapterLoader.class, selector = "amqp")
diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/CqlDriverAdapterStub.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/CqlDriverAdapterStub.java
index 8da279000..3d0dd3bdb 100644
--- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/CqlDriverAdapterStub.java
+++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/CqlDriverAdapterStub.java
@@ -18,7 +18,7 @@ package io.nosqlbench.adapter.cqld4;
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
@Service(value = DriverAdapter.class, selector = "cql")
diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/Cqld4DriverAdapter.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/Cqld4DriverAdapter.java
index 7927cd73c..736e40ef5 100644
--- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/Cqld4DriverAdapter.java
+++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/Cqld4DriverAdapter.java
@@ -25,7 +25,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter;
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache;
import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/Cqld4DriverAdapterLoader.java b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/Cqld4DriverAdapterLoader.java
index 85342bb3c..96b93e291 100644
--- a/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/Cqld4DriverAdapterLoader.java
+++ b/adapter-cqld4/src/main/java/io/nosqlbench/adapter/cqld4/Cqld4DriverAdapterLoader.java
@@ -20,7 +20,7 @@ package io.nosqlbench.adapter.cqld4;
import io.nosqlbench.adapter.diag.DriverAdapterLoader;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
@Service(value = DriverAdapterLoader.class, selector = "cqld4")
diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/api/CGModelTransformer.java b/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/api/CGModelTransformer.java
index 56493a469..705b7bd91 100644
--- a/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/api/CGModelTransformer.java
+++ b/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/api/CGModelTransformer.java
@@ -16,7 +16,7 @@
package io.nosqlbench.cqlgen.api;
-import io.nosqlbench.nb.api.components.NBNamedElement;
+import io.nosqlbench.nb.api.components.core.NBNamedElement;
import io.nosqlbench.cqlgen.model.CqlModel;
import java.util.function.Function;
diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlColumnBase.java b/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlColumnBase.java
index 185df0177..f08dc4c68 100644
--- a/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlColumnBase.java
+++ b/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlColumnBase.java
@@ -17,7 +17,7 @@
package io.nosqlbench.cqlgen.model;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBNamedElement;
+import io.nosqlbench.nb.api.components.core.NBNamedElement;
import io.nosqlbench.nb.api.labels.NBLabeledElement;
public abstract class CqlColumnBase implements NBNamedElement, NBLabeledElement {
diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlKeyspaceDef.java b/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlKeyspaceDef.java
index 4e3ee7f1b..c0f14b926 100644
--- a/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlKeyspaceDef.java
+++ b/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlKeyspaceDef.java
@@ -18,7 +18,7 @@ package io.nosqlbench.cqlgen.model;
import com.datastax.oss.driver.internal.core.util.Strings;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBNamedElement;
+import io.nosqlbench.nb.api.components.core.NBNamedElement;
import io.nosqlbench.nb.api.labels.NBLabeledElement;
import io.nosqlbench.cqlgen.core.CGKeyspaceStats;
diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlTable.java b/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlTable.java
index 8c2ecdd45..38d075f0d 100644
--- a/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlTable.java
+++ b/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlTable.java
@@ -17,7 +17,7 @@
package io.nosqlbench.cqlgen.model;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBNamedElement;
+import io.nosqlbench.nb.api.components.core.NBNamedElement;
import io.nosqlbench.nb.api.labels.NBLabeledElement;
import io.nosqlbench.cqlgen.core.CGTableStats;
import io.nosqlbench.cqlgen.transformers.ComputedTableStats;
diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlType.java b/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlType.java
index 12866f4bc..fc56b3b5e 100644
--- a/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlType.java
+++ b/adapter-cqld4/src/main/java/io/nosqlbench/cqlgen/model/CqlType.java
@@ -18,7 +18,7 @@ package io.nosqlbench.cqlgen.model;
import io.nosqlbench.nb.api.labels.NBLabeledElement;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBNamedElement;
+import io.nosqlbench.nb.api.components.core.NBNamedElement;
import java.util.ArrayList;
import java.util.List;
diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/engine/extensions/vectormath/CqlUtils.java b/adapter-cqld4/src/main/java/io/nosqlbench/engine/extensions/vectormath/CqlUtils.java
index 838354549..ddcc692b4 100644
--- a/adapter-cqld4/src/main/java/io/nosqlbench/engine/extensions/vectormath/CqlUtils.java
+++ b/adapter-cqld4/src/main/java/io/nosqlbench/engine/extensions/vectormath/CqlUtils.java
@@ -17,8 +17,8 @@
package io.nosqlbench.engine.extensions.vectormath;
import com.datastax.oss.driver.api.core.cql.Row;
-import io.nosqlbench.nb.api.components.NBBaseComponent;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBBaseComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import java.util.List;
import java.util.Objects;
diff --git a/adapter-cqld4/src/main/java/io/nosqlbench/engine/extensions/vectormath/CqlUtilsPluginInfo.java b/adapter-cqld4/src/main/java/io/nosqlbench/engine/extensions/vectormath/CqlUtilsPluginInfo.java
index 2663b808f..93fd7e6b1 100644
--- a/adapter-cqld4/src/main/java/io/nosqlbench/engine/extensions/vectormath/CqlUtilsPluginInfo.java
+++ b/adapter-cqld4/src/main/java/io/nosqlbench/engine/extensions/vectormath/CqlUtilsPluginInfo.java
@@ -17,7 +17,7 @@
package io.nosqlbench.engine.extensions.vectormath;
import io.nosqlbench.nb.api.extensions.ScriptingExtensionPluginInfo;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
import org.apache.logging.log4j.Logger;
diff --git a/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagDriverAdapter.java b/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagDriverAdapter.java
index 5003ef1fc..c22077ac7 100644
--- a/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagDriverAdapter.java
+++ b/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagDriverAdapter.java
@@ -26,7 +26,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.BaseDriverAdapter;
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter;
import io.nosqlbench.adapters.api.activityimpl.uniform.decorators.SyntheticOpTemplateProvider;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
import io.nosqlbench.nb.api.config.params.NBParams;
import io.nosqlbench.nb.api.config.standard.NBConfigModel;
diff --git a/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagDriverAdapterLoader.java b/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagDriverAdapterLoader.java
index e32c95ac4..b17258f14 100644
--- a/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagDriverAdapterLoader.java
+++ b/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagDriverAdapterLoader.java
@@ -19,7 +19,7 @@ package io.nosqlbench.adapter.diag;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
@Service(value = DriverAdapterLoader.class, selector = "diag")
diff --git a/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagOpDispenser.java b/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagOpDispenser.java
index e338c7f82..203604981 100644
--- a/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagOpDispenser.java
+++ b/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/DiagOpDispenser.java
@@ -22,7 +22,7 @@ import io.nosqlbench.adapters.api.templating.ParsedOp;
import io.nosqlbench.nb.api.config.standard.NBConfigModel;
import io.nosqlbench.nb.api.config.standard.NBConfiguration;
import io.nosqlbench.nb.api.config.standard.NBReconfigurable;
-import io.nosqlbench.nb.api.components.NBParentComponentInjection;
+import io.nosqlbench.nb.api.components.core.NBParentComponentInjection;
import io.nosqlbench.engine.api.activityapi.ratelimits.RateLimiter;
import io.nosqlbench.nb.annotations.ServiceSelector;
import org.apache.logging.log4j.LogManager;
diff --git a/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/optasks/BaseDiagTask.java b/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/optasks/BaseDiagTask.java
index c9933b7ef..cfc0f941a 100644
--- a/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/optasks/BaseDiagTask.java
+++ b/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/optasks/BaseDiagTask.java
@@ -18,7 +18,7 @@ package io.nosqlbench.adapter.diag.optasks;
import io.nosqlbench.nb.api.labels.NBLabeledElement;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import java.util.Map;
diff --git a/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/optasks/DiagTask.java b/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/optasks/DiagTask.java
index 9cb53b88e..e4719596b 100644
--- a/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/optasks/DiagTask.java
+++ b/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/optasks/DiagTask.java
@@ -19,7 +19,7 @@ package io.nosqlbench.adapter.diag.optasks;
import io.nosqlbench.nb.api.config.standard.NBConfigurable;
import io.nosqlbench.nb.api.config.standard.NBReconfigurable;
import io.nosqlbench.nb.api.labels.NBLabeledElement;
-import io.nosqlbench.nb.api.components.NBParentComponentInjection;
+import io.nosqlbench.nb.api.components.core.NBParentComponentInjection;
import java.util.Map;
import java.util.function.BiFunction;
diff --git a/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/optasks/DiagTask_gauge.java b/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/optasks/DiagTask_gauge.java
index 9bde8b89f..16cf3c0bc 100644
--- a/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/optasks/DiagTask_gauge.java
+++ b/adapter-diag/src/main/java/io/nosqlbench/adapter/diag/optasks/DiagTask_gauge.java
@@ -22,7 +22,7 @@ import io.nosqlbench.nb.api.config.standard.NBConfigModel;
import io.nosqlbench.nb.api.config.standard.NBConfiguration;
import io.nosqlbench.nb.api.config.standard.Param;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBParentComponentInjection;
+import io.nosqlbench.nb.api.components.core.NBParentComponentInjection;
import io.nosqlbench.nb.annotations.Service;
import io.nosqlbench.virtdata.api.bindings.VirtDataConversions;
import io.nosqlbench.virtdata.core.bindings.DataMapper;
diff --git a/adapter-diag/src/test/java/io/nosqlbench/adapter/diag/optasks/DiagTask_gaugeTest.java b/adapter-diag/src/test/java/io/nosqlbench/adapter/diag/optasks/DiagTask_gaugeTest.java
index ad55506ea..036752e16 100644
--- a/adapter-diag/src/test/java/io/nosqlbench/adapter/diag/optasks/DiagTask_gaugeTest.java
+++ b/adapter-diag/src/test/java/io/nosqlbench/adapter/diag/optasks/DiagTask_gaugeTest.java
@@ -19,7 +19,7 @@ package io.nosqlbench.adapter.diag.optasks;
import io.nosqlbench.nb.api.config.standard.NBConfiguration;
import io.nosqlbench.nb.api.config.standard.TestComponent;
import io.nosqlbench.nb.api.labels.NBLabeledElement;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import org.assertj.core.data.Offset;
import org.junit.jupiter.api.Test;
diff --git a/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/DynamoDBDriverAdapter.java b/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/DynamoDBDriverAdapter.java
index 86e6d4a6a..0bd7802fe 100644
--- a/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/DynamoDBDriverAdapter.java
+++ b/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/DynamoDBDriverAdapter.java
@@ -22,7 +22,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.BaseDriverAdapter;
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter;
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Maturity;
import io.nosqlbench.nb.annotations.Service;
import io.nosqlbench.nb.api.config.standard.NBConfigModel;
diff --git a/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/DynamoDBDriverAdapterLoader.java b/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/DynamoDBDriverAdapterLoader.java
index f1feb993b..344846937 100644
--- a/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/DynamoDBDriverAdapterLoader.java
+++ b/adapter-dynamodb/src/main/java/io/nosqlbench/adapter/dynamodb/DynamoDBDriverAdapterLoader.java
@@ -20,7 +20,7 @@ package io.nosqlbench.adapter.dynamodb;
import io.nosqlbench.adapter.diag.DriverAdapterLoader;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
@Service(value = DriverAdapterLoader.class, selector = "dynamodb")
diff --git a/adapter-http/src/main/java/io/nosqlbench/adapter/http/HttpDriverAdapter.java b/adapter-http/src/main/java/io/nosqlbench/adapter/http/HttpDriverAdapter.java
index 0a328e79f..b443117fa 100644
--- a/adapter-http/src/main/java/io/nosqlbench/adapter/http/HttpDriverAdapter.java
+++ b/adapter-http/src/main/java/io/nosqlbench/adapter/http/HttpDriverAdapter.java
@@ -27,7 +27,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.BaseDriverAdapter;
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter;
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
import io.nosqlbench.nb.api.config.standard.NBConfigModel;
import io.nosqlbench.nb.api.config.standard.NBConfiguration;
diff --git a/adapter-http/src/main/java/io/nosqlbench/adapter/http/HttpDriverAdapterLoader.java b/adapter-http/src/main/java/io/nosqlbench/adapter/http/HttpDriverAdapterLoader.java
index c4f783337..921e1e336 100644
--- a/adapter-http/src/main/java/io/nosqlbench/adapter/http/HttpDriverAdapterLoader.java
+++ b/adapter-http/src/main/java/io/nosqlbench/adapter/http/HttpDriverAdapterLoader.java
@@ -20,7 +20,7 @@ package io.nosqlbench.adapter.http;
import io.nosqlbench.adapter.diag.DriverAdapterLoader;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
@Service(value = DriverAdapterLoader.class, selector = "http")
diff --git a/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpMetrics.java b/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpMetrics.java
index 3528c2562..7437bda6f 100644
--- a/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpMetrics.java
+++ b/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpMetrics.java
@@ -19,7 +19,7 @@ package io.nosqlbench.adapter.http.core;
import com.codahale.metrics.Histogram;
import io.nosqlbench.nb.api.labels.NBLabeledElement;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
public class HttpMetrics implements NBLabeledElement {
private final NBComponent parent;
diff --git a/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpSpace.java b/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpSpace.java
index 2cdc8b542..63cffd03f 100644
--- a/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpSpace.java
+++ b/adapter-http/src/main/java/io/nosqlbench/adapter/http/core/HttpSpace.java
@@ -22,7 +22,7 @@ import io.nosqlbench.nb.api.config.standard.ConfigModel;
import io.nosqlbench.nb.api.config.standard.NBConfigModel;
import io.nosqlbench.nb.api.config.standard.NBConfiguration;
import io.nosqlbench.nb.api.config.standard.Param;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/JDBCDriverAdapter.java b/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/JDBCDriverAdapter.java
index 1f3cca832..cbf51f176 100644
--- a/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/JDBCDriverAdapter.java
+++ b/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/JDBCDriverAdapter.java
@@ -24,7 +24,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.BaseDriverAdapter;
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter;
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/utils/JDBCDriverAdapterLoader.java b/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/utils/JDBCDriverAdapterLoader.java
index d36cb9614..1d3a7daa0 100644
--- a/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/utils/JDBCDriverAdapterLoader.java
+++ b/adapter-jdbc/src/main/java/io/nosqlbench/adapter/jdbc/utils/JDBCDriverAdapterLoader.java
@@ -21,7 +21,7 @@ package io.nosqlbench.adapter.jdbc.utils;
import io.nosqlbench.adapter.diag.DriverAdapterLoader;
import io.nosqlbench.adapter.jdbc.JDBCDriverAdapter;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
@Service(value = DriverAdapterLoader.class, selector = "jdbc")
diff --git a/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/KafkaDriverAdapter.java b/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/KafkaDriverAdapter.java
index d4bf488de..66afb8291 100644
--- a/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/KafkaDriverAdapter.java
+++ b/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/KafkaDriverAdapter.java
@@ -24,7 +24,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.BaseDriverAdapter;
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter;
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/KafkaDriverAdapterLoader.java b/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/KafkaDriverAdapterLoader.java
index 2c4a7a23d..5b64c1e99 100644
--- a/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/KafkaDriverAdapterLoader.java
+++ b/adapter-kafka/src/main/java/io/nosqlbench/adapter/kafka/KafkaDriverAdapterLoader.java
@@ -20,7 +20,7 @@ package io.nosqlbench.adapter.kafka;
import io.nosqlbench.adapter.diag.DriverAdapterLoader;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
@Service(value = DriverAdapterLoader.class, selector = "kafka")
diff --git a/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongoDriverAdapterLoader.java b/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongoDriverAdapterLoader.java
index 5856881fd..9cd914f1a 100644
--- a/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongoDriverAdapterLoader.java
+++ b/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongoDriverAdapterLoader.java
@@ -20,7 +20,7 @@ package io.nosqlbench.adapter.mongodb.core;
import io.nosqlbench.adapter.diag.DriverAdapterLoader;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
@Service(value = DriverAdapterLoader.class, selector = "mongodb")
diff --git a/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongoSpace.java b/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongoSpace.java
index e19cfa1c1..2c66c76e9 100644
--- a/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongoSpace.java
+++ b/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongoSpace.java
@@ -22,7 +22,7 @@ import com.mongodb.ServerApi;
import com.mongodb.ServerApiVersion;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
-import io.nosqlbench.nb.api.components.NBNamedElement;
+import io.nosqlbench.nb.api.components.core.NBNamedElement;
import com.mongodb.client.MongoDatabase;
import io.nosqlbench.nb.api.config.standard.ConfigModel;
import io.nosqlbench.nb.api.config.standard.NBConfigModel;
diff --git a/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongodbDriverAdapter.java b/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongodbDriverAdapter.java
index f858973ed..71464108c 100644
--- a/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongodbDriverAdapter.java
+++ b/adapter-mongodb/src/main/java/io/nosqlbench/adapter/mongodb/core/MongodbDriverAdapter.java
@@ -23,7 +23,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.BaseDriverAdapter;
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter;
import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
import java.util.function.Function;
diff --git a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/PineconeDriverAdapter.java b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/PineconeDriverAdapter.java
index 03f342f4f..ee8742839 100644
--- a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/PineconeDriverAdapter.java
+++ b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/PineconeDriverAdapter.java
@@ -24,7 +24,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.BaseDriverAdapter;
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter;
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
import java.util.function.Function;
diff --git a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/PineconeDriverAdapterLoader.java b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/PineconeDriverAdapterLoader.java
index f81cb9c00..f6e29ebc0 100644
--- a/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/PineconeDriverAdapterLoader.java
+++ b/adapter-pinecone/src/main/java/io/nosqlbench/adapter/pinecone/PineconeDriverAdapterLoader.java
@@ -20,7 +20,7 @@ package io.nosqlbench.adapter.pinecone;
import io.nosqlbench.adapter.diag.DriverAdapterLoader;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
@Service(value = DriverAdapterLoader.class, selector = "pinecone")
diff --git a/adapter-pinecone/src/main/java/io/nosqlbench/engine/extensions/vectormath/PineconeScriptingUtils.java b/adapter-pinecone/src/main/java/io/nosqlbench/engine/extensions/vectormath/PineconeScriptingUtils.java
index bcce67df4..bfb224553 100644
--- a/adapter-pinecone/src/main/java/io/nosqlbench/engine/extensions/vectormath/PineconeScriptingUtils.java
+++ b/adapter-pinecone/src/main/java/io/nosqlbench/engine/extensions/vectormath/PineconeScriptingUtils.java
@@ -16,8 +16,8 @@
package io.nosqlbench.engine.extensions.vectormath;
-import io.nosqlbench.nb.api.components.NBBaseComponent;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBBaseComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.pinecone.proto.QueryResponse;
import io.pinecone.proto.ScoredVector;
diff --git a/adapter-pinecone/src/main/java/io/nosqlbench/engine/extensions/vectormath/PineconeScriptingUtilsPluginInfo.java b/adapter-pinecone/src/main/java/io/nosqlbench/engine/extensions/vectormath/PineconeScriptingUtilsPluginInfo.java
index 02420c96e..a5b4e4fbe 100644
--- a/adapter-pinecone/src/main/java/io/nosqlbench/engine/extensions/vectormath/PineconeScriptingUtilsPluginInfo.java
+++ b/adapter-pinecone/src/main/java/io/nosqlbench/engine/extensions/vectormath/PineconeScriptingUtilsPluginInfo.java
@@ -17,7 +17,7 @@
package io.nosqlbench.engine.extensions.vectormath;
import io.nosqlbench.nb.api.extensions.ScriptingExtensionPluginInfo;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
import org.apache.logging.log4j.Logger;
diff --git a/adapter-pinecone/src/test/java/io/nosqlbench/engine/extensions/vectormath/PineconeScriptingUtilsTest.java b/adapter-pinecone/src/test/java/io/nosqlbench/engine/extensions/vectormath/PineconeScriptingUtilsTest.java
index fdfbe0812..201ad1af5 100644
--- a/adapter-pinecone/src/test/java/io/nosqlbench/engine/extensions/vectormath/PineconeScriptingUtilsTest.java
+++ b/adapter-pinecone/src/test/java/io/nosqlbench/engine/extensions/vectormath/PineconeScriptingUtilsTest.java
@@ -19,7 +19,7 @@ package io.nosqlbench.engine.extensions.vectormath;
import com.google.protobuf.Struct;
import com.google.protobuf.Value;
-import io.nosqlbench.nb.api.components.NBBaseComponent;
+import io.nosqlbench.nb.api.components.core.NBBaseComponent;
import io.pinecone.proto.QueryResponse;
import io.pinecone.proto.ScoredVector;
import org.junit.jupiter.api.Test;
diff --git a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/PulsarDriverAdapter.java b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/PulsarDriverAdapter.java
index 84853df1b..15df97bd1 100644
--- a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/PulsarDriverAdapter.java
+++ b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/PulsarDriverAdapter.java
@@ -22,7 +22,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.BaseDriverAdapter;
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter;
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
import io.nosqlbench.nb.api.config.standard.NBConfigModel;
import io.nosqlbench.nb.api.config.standard.NBConfiguration;
diff --git a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/PulsarDriverAdapterLoader.java b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/PulsarDriverAdapterLoader.java
index 430942c3c..b12be9ead 100644
--- a/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/PulsarDriverAdapterLoader.java
+++ b/adapter-pulsar/src/main/java/io/nosqlbench/adapter/pulsar/PulsarDriverAdapterLoader.java
@@ -20,7 +20,7 @@ package io.nosqlbench.adapter.pulsar;
import io.nosqlbench.adapter.diag.DriverAdapterLoader;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
@Service(value = DriverAdapterLoader.class, selector = "pulsar")
diff --git a/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/S4JDriverAdapter.java b/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/S4JDriverAdapter.java
index 823d3a5d1..f995bc21e 100644
--- a/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/S4JDriverAdapter.java
+++ b/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/S4JDriverAdapter.java
@@ -24,7 +24,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.BaseDriverAdapter;
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter;
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/S4JDriverAdapterLoader.java b/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/S4JDriverAdapterLoader.java
index 174ec78fa..094b8ee95 100644
--- a/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/S4JDriverAdapterLoader.java
+++ b/adapter-s4j/src/main/java/io/nosqlbench/adapter/s4j/S4JDriverAdapterLoader.java
@@ -20,7 +20,7 @@ package io.nosqlbench.adapter.s4j;
import io.nosqlbench.adapter.diag.DriverAdapterLoader;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
@Service(value = DriverAdapterLoader.class, selector = "s4j")
diff --git a/adapter-stdout/src/main/java/io/nosqlbench/adapter/stdout/StdoutDriverAdapter.java b/adapter-stdout/src/main/java/io/nosqlbench/adapter/stdout/StdoutDriverAdapter.java
index e5a39bb90..4f5180f05 100644
--- a/adapter-stdout/src/main/java/io/nosqlbench/adapter/stdout/StdoutDriverAdapter.java
+++ b/adapter-stdout/src/main/java/io/nosqlbench/adapter/stdout/StdoutDriverAdapter.java
@@ -25,7 +25,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter;
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache;
import io.nosqlbench.adapters.api.activityimpl.uniform.decorators.SyntheticOpTemplateProvider;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
import io.nosqlbench.nb.api.config.standard.ConfigModel;
import io.nosqlbench.nb.api.config.standard.NBConfigModel;
diff --git a/adapter-stdout/src/main/java/io/nosqlbench/adapter/stdout/StdoutDriverAdapterLoader.java b/adapter-stdout/src/main/java/io/nosqlbench/adapter/stdout/StdoutDriverAdapterLoader.java
index cc46f00be..0b89f925e 100644
--- a/adapter-stdout/src/main/java/io/nosqlbench/adapter/stdout/StdoutDriverAdapterLoader.java
+++ b/adapter-stdout/src/main/java/io/nosqlbench/adapter/stdout/StdoutDriverAdapterLoader.java
@@ -20,7 +20,7 @@ package io.nosqlbench.adapter.stdout;
import io.nosqlbench.adapter.diag.DriverAdapterLoader;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
@Service(value = DriverAdapterLoader.class, selector = "stdout")
diff --git a/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientDriverAdapter.java b/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientDriverAdapter.java
index 076fd8286..80d854041 100644
--- a/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientDriverAdapter.java
+++ b/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientDriverAdapter.java
@@ -28,7 +28,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter;
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache;
import io.nosqlbench.adapters.api.activityimpl.uniform.decorators.SyntheticOpTemplateProvider;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientDriverAdapterLoader.java b/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientDriverAdapterLoader.java
index 4ee66f215..f11a86234 100644
--- a/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientDriverAdapterLoader.java
+++ b/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpclient/TcpClientDriverAdapterLoader.java
@@ -20,7 +20,7 @@ package io.nosqlbench.adapter.tcpclient;
import io.nosqlbench.adapter.diag.DriverAdapterLoader;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
@Service(value = DriverAdapterLoader.class, selector = "tcpclient")
diff --git a/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpserver/TcpServerDriverAdapter.java b/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpserver/TcpServerDriverAdapter.java
index e02becf0f..f65d6c54e 100644
--- a/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpserver/TcpServerDriverAdapter.java
+++ b/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpserver/TcpServerDriverAdapter.java
@@ -27,7 +27,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter;
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverSpaceCache;
import io.nosqlbench.adapters.api.activityimpl.uniform.decorators.SyntheticOpTemplateProvider;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpserver/TcpServerDriverAdapterLoader.java b/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpserver/TcpServerDriverAdapterLoader.java
index e13b830dc..a71442789 100644
--- a/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpserver/TcpServerDriverAdapterLoader.java
+++ b/adapter-tcp/src/main/java/io/nosqlbench/adapter/tcpserver/TcpServerDriverAdapterLoader.java
@@ -20,7 +20,7 @@ package io.nosqlbench.adapter.tcpserver;
import io.nosqlbench.adapter.diag.DriverAdapterLoader;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
@Service(value = DriverAdapterLoader.class, selector = "tcpserver")
diff --git a/adapters-api/src/main/java/io/nosqlbench/adapter/diag/DriverAdapterLoader.java b/adapters-api/src/main/java/io/nosqlbench/adapter/diag/DriverAdapterLoader.java
index a609d0c34..f16dd88f8 100644
--- a/adapters-api/src/main/java/io/nosqlbench/adapter/diag/DriverAdapterLoader.java
+++ b/adapters-api/src/main/java/io/nosqlbench/adapter/diag/DriverAdapterLoader.java
@@ -21,7 +21,7 @@ package io.nosqlbench.adapter.diag;
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter;
import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
public interface DriverAdapterLoader {
public DriverAdapter load(NBComponent parent, NBLabels childLabels);
diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/BaseOpDispenser.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/BaseOpDispenser.java
index 47c5ffb58..f514c240d 100644
--- a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/BaseOpDispenser.java
+++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/BaseOpDispenser.java
@@ -21,12 +21,11 @@ import groovy.lang.Binding;
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter;
import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op;
import io.nosqlbench.adapters.api.evalctx.*;
-import io.nosqlbench.adapters.api.evalctx.*;
import io.nosqlbench.adapters.api.metrics.ThreadLocalNamedTimers;
import io.nosqlbench.adapters.api.templating.ParsedOp;
import io.nosqlbench.nb.api.labels.NBLabels;
import io.nosqlbench.nb.api.errors.OpConfigError;
-import io.nosqlbench.nb.api.components.NBBaseComponent;
+import io.nosqlbench.nb.api.components.core.NBBaseComponent;
import io.nosqlbench.virtdata.core.templates.ParsedTemplateString;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/docs/BundledDriverAdapterDocs.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/docs/BundledDriverAdapterDocs.java
index 6165b4f0a..457e950cd 100644
--- a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/docs/BundledDriverAdapterDocs.java
+++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/docs/BundledDriverAdapterDocs.java
@@ -24,7 +24,7 @@ import io.nosqlbench.nb.api.docsapi.Docs;
import io.nosqlbench.nb.api.docsapi.DocsBinder;
import io.nosqlbench.nb.api.labels.NBLabels;
import io.nosqlbench.nb.api.spi.SimpleServiceLoader;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Maturity;
import io.nosqlbench.nb.annotations.Service;
diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/BaseDriverAdapter.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/BaseDriverAdapter.java
index deaaed604..91a458bd0 100644
--- a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/BaseDriverAdapter.java
+++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/BaseDriverAdapter.java
@@ -21,8 +21,8 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.fieldmappers.FieldDestruc
import io.nosqlbench.adapters.api.templating.ParsedOp;
import io.nosqlbench.nb.api.config.standard.*;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
-import io.nosqlbench.nb.api.components.NBBaseComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBBaseComponent;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/DriverAdapter.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/DriverAdapter.java
index b5f5fee9c..0bd620bb3 100644
--- a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/DriverAdapter.java
+++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityimpl/uniform/DriverAdapter.java
@@ -22,7 +22,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op;
import io.nosqlbench.nb.api.docsapi.Docs;
import io.nosqlbench.nb.api.docsapi.DocsBinder;
import io.nosqlbench.adapters.api.templating.ParsedOp;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Maturity;
import io.nosqlbench.nb.annotations.Service;
import io.nosqlbench.nb.api.config.standard.NBConfiguration;
diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/templating/ParsedOp.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/templating/ParsedOp.java
index ebc5e3cb0..5f64c2c8b 100644
--- a/adapters-api/src/main/java/io/nosqlbench/adapters/api/templating/ParsedOp.java
+++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/templating/ParsedOp.java
@@ -24,8 +24,8 @@ import io.nosqlbench.nb.api.config.fieldreaders.StaticFieldReader;
import io.nosqlbench.nb.api.config.standard.NBConfigError;
import io.nosqlbench.nb.api.config.standard.NBConfiguration;
import io.nosqlbench.nb.api.errors.OpConfigError;
-import io.nosqlbench.nb.api.components.NBComponent;
-import io.nosqlbench.nb.api.components.NBBaseComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBBaseComponent;
import io.nosqlbench.engine.api.templating.ObjectCache;
import io.nosqlbench.engine.api.templating.ParsedTemplateMap;
import io.nosqlbench.engine.api.templating.TypeAndTarget;
diff --git a/adapters-api/src/test/java/io/nosqlbench/adapters/api/templating/ParsedOpTest.java b/adapters-api/src/test/java/io/nosqlbench/adapters/api/templating/ParsedOpTest.java
index 65719e2d5..9bf906285 100644
--- a/adapters-api/src/test/java/io/nosqlbench/adapters/api/templating/ParsedOpTest.java
+++ b/adapters-api/src/test/java/io/nosqlbench/adapters/api/templating/ParsedOpTest.java
@@ -25,7 +25,7 @@ import io.nosqlbench.adapters.api.activityconfig.yaml.OpsDocList;
import io.nosqlbench.nb.api.config.standard.ConfigModel;
import io.nosqlbench.nb.api.config.standard.NBConfiguration;
import io.nosqlbench.nb.api.config.standard.Param;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import org.junit.jupiter.api.Test;
import java.util.List;
diff --git a/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java b/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java
index 5ccfd08c7..395fda36e 100644
--- a/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java
+++ b/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java
@@ -34,7 +34,7 @@ import io.nosqlbench.nb.api.labels.NBLabels;
import io.nosqlbench.nb.api.logging.NBLogLevel;
import io.nosqlbench.nb.api.metadata.SessionNamer;
import io.nosqlbench.nb.api.metadata.SystemId;
-import io.nosqlbench.nb.api.components.NBBaseComponent;
+import io.nosqlbench.nb.api.components.core.NBBaseComponent;
import io.nosqlbench.engine.api.activityapi.cyclelog.outputs.cyclelog.CycleLogDumperUtility;
import io.nosqlbench.engine.api.activityapi.cyclelog.outputs.cyclelog.CycleLogImporterUtility;
import io.nosqlbench.engine.api.activityapi.input.InputType;
@@ -42,7 +42,6 @@ import io.nosqlbench.engine.api.activityapi.output.OutputType;
import io.nosqlbench.engine.cli.NBCLIOptions.Mode;
import io.nosqlbench.engine.core.annotation.Annotators;
import io.nosqlbench.engine.core.lifecycle.ExecutionResult;
-import io.nosqlbench.engine.core.clientload.ClientSystemMetricChecker;
import io.nosqlbench.engine.core.lifecycle.process.NBCLIErrorHandler;
import io.nosqlbench.engine.core.lifecycle.activity.ActivityTypeLoader;
import io.nosqlbench.engine.core.lifecycle.session.NBSession;
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/core/Activity.java b/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/core/Activity.java
index 1c27f5fa4..9dcd74d71 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/core/Activity.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/core/Activity.java
@@ -16,7 +16,7 @@
package io.nosqlbench.engine.api.activityapi.core;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
import io.nosqlbench.nb.api.engine.activityimpl.ParameterMap;
import io.nosqlbench.engine.api.activityapi.core.progress.ProgressCapable;
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivityType.java b/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivityType.java
index 39256d4a0..a6fe93b6b 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivityType.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/core/ActivityType.java
@@ -16,7 +16,7 @@
package io.nosqlbench.engine.api.activityapi.core;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
import io.nosqlbench.engine.api.activityapi.input.InputDispenser;
import io.nosqlbench.engine.api.activityapi.output.OutputDispenser;
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/ErrorMetrics.java b/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/ErrorMetrics.java
index 5c68f679e..df6c4027f 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/ErrorMetrics.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/errorhandling/ErrorMetrics.java
@@ -17,7 +17,7 @@
package io.nosqlbench.engine.api.activityapi.errorhandling;
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.engine.api.metrics.ExceptionCountMetrics;
import io.nosqlbench.engine.api.metrics.ExceptionExpectedResultVerificationMetrics;
import io.nosqlbench.engine.api.metrics.ExceptionHistoMetrics;
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/RateLimiters.java b/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/RateLimiters.java
index 86670a009..1a52e0990 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/RateLimiters.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/RateLimiters.java
@@ -16,7 +16,7 @@
package io.nosqlbench.engine.api.activityapi.ratelimits;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.engine.api.activityapi.ratelimits.simrate.SimRate;
import io.nosqlbench.engine.api.activityapi.ratelimits.simrate.SimRateSpec;
import org.apache.logging.log4j.LogManager;
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/simrate/SimRate.java b/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/simrate/SimRate.java
index 031781f4b..646c2554c 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/simrate/SimRate.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/api/activityapi/ratelimits/simrate/SimRate.java
@@ -17,8 +17,8 @@
package io.nosqlbench.engine.api.activityapi.ratelimits.simrate;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBBaseComponent;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBBaseComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.engine.api.activityapi.ratelimits.RateLimiter;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java
index 1b3408be8..95e2a983f 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java
@@ -16,8 +16,8 @@
package io.nosqlbench.engine.api.activityimpl;
-import io.nosqlbench.nb.api.components.NBComponent;
-import io.nosqlbench.nb.api.components.NBBaseComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBBaseComponent;
import io.nosqlbench.nb.api.components.events.ParamChange;
import io.nosqlbench.engine.api.activityapi.core.*;
import io.nosqlbench.engine.api.activityapi.core.progress.ActivityMetricProgressMeter;
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/input/AtomicInput.java b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/input/AtomicInput.java
index 643cff61e..85db5bde1 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/input/AtomicInput.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/input/AtomicInput.java
@@ -18,8 +18,8 @@ package io.nosqlbench.engine.api.activityimpl.input;
import com.codahale.metrics.Gauge;
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
import io.nosqlbench.nb.api.engine.activityimpl.CyclesSpec;
-import io.nosqlbench.nb.api.components.NBComponent;
-import io.nosqlbench.nb.api.components.NBBaseComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBBaseComponent;
import io.nosqlbench.engine.api.activityapi.core.ActivityDefObserver;
import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleSegment;
import io.nosqlbench.engine.api.activityapi.input.Input;
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivity.java b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivity.java
index d34c84243..0616d534e 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivity.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivity.java
@@ -28,7 +28,7 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.decorators.SyntheticOpTem
import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.Op;
import io.nosqlbench.adapters.api.templating.ParsedOp;
import io.nosqlbench.nb.api.lifecycle.Shutdownable;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.api.config.standard.*;
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
import io.nosqlbench.nb.api.errors.BasicError;
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivityType.java b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivityType.java
index 644421d9e..a3e03db0d 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivityType.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/api/activityimpl/uniform/StandardActivityType.java
@@ -17,7 +17,7 @@
package io.nosqlbench.engine.api.activityimpl.uniform;
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
import io.nosqlbench.engine.api.activityapi.core.ActionDispenser;
import io.nosqlbench.engine.api.activityapi.core.ActivityType;
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionCountMetrics.java b/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionCountMetrics.java
index 7e591a674..c7cab5177 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionCountMetrics.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionCountMetrics.java
@@ -17,7 +17,7 @@
package io.nosqlbench.engine.api.metrics;
import com.codahale.metrics.Counter;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import java.util.ArrayList;
import java.util.List;
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionExpectedResultVerificationMetrics.java b/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionExpectedResultVerificationMetrics.java
index e66f25d87..ccd8b212f 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionExpectedResultVerificationMetrics.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionExpectedResultVerificationMetrics.java
@@ -17,7 +17,7 @@
package io.nosqlbench.engine.api.metrics;
import com.codahale.metrics.Counter;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
/**
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionHistoMetrics.java b/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionHistoMetrics.java
index a488942cb..4f60bf0c0 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionHistoMetrics.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionHistoMetrics.java
@@ -18,7 +18,7 @@ package io.nosqlbench.engine.api.metrics;
import com.codahale.metrics.Histogram;
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import java.util.ArrayList;
import java.util.List;
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionMeterMetrics.java b/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionMeterMetrics.java
index 840eae18f..16186b5a1 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionMeterMetrics.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionMeterMetrics.java
@@ -17,7 +17,7 @@
package io.nosqlbench.engine.api.metrics;
import com.codahale.metrics.Meter;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import java.util.ArrayList;
import java.util.List;
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionTimerMetrics.java b/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionTimerMetrics.java
index eb0935acb..3edcd751e 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionTimerMetrics.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/api/metrics/ExceptionTimerMetrics.java
@@ -18,7 +18,7 @@ package io.nosqlbench.engine.api.metrics;
import com.codahale.metrics.Timer;
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import java.util.ArrayList;
import java.util.List;
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/cmdstream/NBJavaCommandLoader.java b/engine-core/src/main/java/io/nosqlbench/engine/cmdstream/NBJavaCommandLoader.java
index af296d461..391c51766 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/cmdstream/NBJavaCommandLoader.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/cmdstream/NBJavaCommandLoader.java
@@ -17,7 +17,7 @@
package io.nosqlbench.engine.cmdstream;
import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBInvokableCommand;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBCommandInfo;
import io.nosqlbench.nb.annotations.ServiceSelector;
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/clientload/ClientSystemMetricChecker.java b/engine-core/src/main/java/io/nosqlbench/engine/core/clientload/ClientSystemMetricChecker.java
index f07fc5a68..3f5371e26 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/core/clientload/ClientSystemMetricChecker.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/core/clientload/ClientSystemMetricChecker.java
@@ -18,8 +18,8 @@ package io.nosqlbench.engine.core.clientload;
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricGauge;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBBaseComponent;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBBaseComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.concurrent.Executors;
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/ExecutionMetricsResult.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/ExecutionMetricsResult.java
index a28bfae75..29ad67bbc 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/ExecutionMetricsResult.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/ExecutionMetricsResult.java
@@ -23,10 +23,10 @@ import com.codahale.metrics.MetricFilter;
import io.nosqlbench.nb.api.engine.metrics.instruments.*;
import io.nosqlbench.nb.api.engine.metrics.reporters.ConsoleReporter;
import io.nosqlbench.nb.api.engine.metrics.reporters.Log4JMetricsReporter;
-import io.nosqlbench.nb.api.components.NBCreators;
-import io.nosqlbench.nb.api.components.NBComponent;
-import io.nosqlbench.nb.api.components.NBComponentTraversal;
-import io.nosqlbench.nb.api.components.NBFinders;
+import io.nosqlbench.nb.api.components.core.NBCreators;
+import io.nosqlbench.nb.api.components.core.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponentTraversal;
+import io.nosqlbench.nb.api.components.core.NBFinders;
import io.nosqlbench.engine.core.metrics.NBMetricsSummary;
import java.io.ByteArrayOutputStream;
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityExecutor.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityExecutor.java
index dc9310d1a..bd6e9743d 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityExecutor.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityExecutor.java
@@ -19,7 +19,7 @@ import com.codahale.metrics.Gauge;
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricGauge;
import io.nosqlbench.nb.api.labels.NBLabeledElement;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponentExecutionScope;
+import io.nosqlbench.nb.api.components.core.NBComponentExecutionScope;
import io.nosqlbench.engine.api.activityapi.core.*;
import io.nosqlbench.engine.api.activityimpl.MotorState;
import io.nosqlbench.nb.api.annotations.Annotation;
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityLoader.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityLoader.java
index c9268247c..4246ef46c 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityLoader.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityLoader.java
@@ -17,7 +17,7 @@
package io.nosqlbench.engine.core.lifecycle.activity;
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.engine.api.activityapi.core.Activity;
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivityType;
import org.apache.logging.log4j.LogManager;
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityTypeLoader.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityTypeLoader.java
index e70b937fd..fc769df7a 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityTypeLoader.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityTypeLoader.java
@@ -18,7 +18,7 @@ package io.nosqlbench.engine.core.lifecycle.activity;
import io.nosqlbench.adapter.diag.DriverAdapterLoader;
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.api.nbio.Content;
import io.nosqlbench.nb.api.nbio.NBIO;
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/ContainerActivitiesController.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/ContainerActivitiesController.java
index a51930cb9..a721fe474 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/ContainerActivitiesController.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/ContainerActivitiesController.java
@@ -17,9 +17,9 @@ package io.nosqlbench.engine.core.lifecycle.scenario.container;
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
import io.nosqlbench.nb.api.engine.activityimpl.ParameterMap;
-import io.nosqlbench.nb.api.components.NBComponent;
-import io.nosqlbench.nb.api.components.NBBaseComponent;
-import io.nosqlbench.nb.api.components.NBComponentErrorHandler;
+import io.nosqlbench.nb.api.components.core.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBBaseComponent;
+import io.nosqlbench.nb.api.components.core.NBComponentErrorHandler;
import io.nosqlbench.engine.api.activityapi.core.Activity;
import io.nosqlbench.engine.api.activityapi.core.progress.ProgressMeterDisplay;
import io.nosqlbench.engine.core.lifecycle.ExecutionResult;
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/ContainerBuilderFacets.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/ContainerBuilderFacets.java
index 1321639a8..c8c84c5fb 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/ContainerBuilderFacets.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/ContainerBuilderFacets.java
@@ -18,7 +18,7 @@ package io.nosqlbench.engine.core.lifecycle.scenario.container;
*/
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import java.io.PrintWriter;
import java.io.Reader;
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/NBBufferedContainer.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/NBBufferedContainer.java
index 1b6add0a0..abc0a0730 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/NBBufferedContainer.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/NBBufferedContainer.java
@@ -24,8 +24,8 @@ import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBInvokableCommand
import io.nosqlbench.nb.api.annotations.Annotation;
import io.nosqlbench.nb.api.annotations.Layer;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBBaseComponent;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBBaseComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/NBContainer.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/NBContainer.java
index ff0b126ba..4d0c78bd2 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/NBContainer.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/NBContainer.java
@@ -18,7 +18,7 @@ package io.nosqlbench.engine.core.lifecycle.scenario.container;
import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBCommandResult;
import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBInvokableCommand;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import java.io.PrintWriter;
import java.io.Reader;
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/NBScenarioContainerBuilder.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/NBScenarioContainerBuilder.java
index 84b97b72e..0523c9855 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/NBScenarioContainerBuilder.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/container/NBScenarioContainerBuilder.java
@@ -18,7 +18,7 @@ package io.nosqlbench.engine.core.lifecycle.scenario.container;
*/
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import java.io.InputStreamReader;
import java.io.PrintWriter;
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/execution/NBCommandInfo.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/execution/NBCommandInfo.java
index 5c0fc9078..b98d57601 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/execution/NBCommandInfo.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/execution/NBCommandInfo.java
@@ -17,7 +17,7 @@
package io.nosqlbench.engine.core.lifecycle.scenario.execution;
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/execution/NBInvokableCommand.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/execution/NBInvokableCommand.java
index b94310980..c8e52c3e6 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/execution/NBInvokableCommand.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/execution/NBInvokableCommand.java
@@ -18,7 +18,7 @@ package io.nosqlbench.engine.core.lifecycle.scenario.execution;
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer;
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBCommandParams;
-import io.nosqlbench.nb.api.components.NBBaseComponent;
+import io.nosqlbench.nb.api.components.core.NBBaseComponent;
import io.nosqlbench.nb.api.labels.NBLabels;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/execution/ScenarioSummary.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/execution/ScenarioSummary.java
index b9d33d3f0..21342b3f3 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/execution/ScenarioSummary.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/execution/ScenarioSummary.java
@@ -16,7 +16,7 @@
package io.nosqlbench.engine.core.lifecycle.scenario.execution;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.engine.core.lifecycle.ExecutionMetricsResult;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/session/NBSession.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/session/NBSession.java
index 61b688d85..8b3e07bf0 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/session/NBSession.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/session/NBSession.java
@@ -21,7 +21,7 @@ import io.nosqlbench.nb.api.engine.metrics.instruments.NBFunctionGauge;
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricGauge;
import io.nosqlbench.nb.api.labels.NBLabeledElement;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBBaseComponent;
+import io.nosqlbench.nb.api.components.core.NBBaseComponent;
import io.nosqlbench.nb.api.components.decorators.NBTokenWords;
import io.nosqlbench.engine.cmdstream.Cmd;
import io.nosqlbench.engine.core.clientload.*;
diff --git a/engine-core/src/test/java/io/nosqlbench/engine/api/metrics/HistoIntervalLoggerTest.java b/engine-core/src/test/java/io/nosqlbench/engine/api/metrics/HistoIntervalLoggerTest.java
index 2b855ae93..b97187cdd 100644
--- a/engine-core/src/test/java/io/nosqlbench/engine/api/metrics/HistoIntervalLoggerTest.java
+++ b/engine-core/src/test/java/io/nosqlbench/engine/api/metrics/HistoIntervalLoggerTest.java
@@ -20,7 +20,7 @@ import io.nosqlbench.nb.api.labels.NBLabels;
import io.nosqlbench.nb.api.engine.metrics.DeltaHdrHistogramReservoir;
import io.nosqlbench.nb.api.engine.metrics.HistoIntervalLogger;
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricHistogram;
-import io.nosqlbench.nb.api.components.NBBaseComponent;
+import io.nosqlbench.nb.api.components.core.NBBaseComponent;
import org.HdrHistogram.EncodableHistogram;
import org.HdrHistogram.Histogram;
import org.HdrHistogram.HistogramLogReader;
diff --git a/engine-core/src/test/java/io/nosqlbench/engine/core/NBBaseCommandTest.java b/engine-core/src/test/java/io/nosqlbench/engine/core/NBBaseCommandTest.java
index 06da29283..3dcbd9bdc 100644
--- a/engine-core/src/test/java/io/nosqlbench/engine/core/NBBaseCommandTest.java
+++ b/engine-core/src/test/java/io/nosqlbench/engine/core/NBBaseCommandTest.java
@@ -20,7 +20,7 @@ import io.nosqlbench.engine.cmdstream.Cmd;
import io.nosqlbench.engine.cmdstream.CmdArg;
import io.nosqlbench.engine.cmdstream.CmdParam;
import io.nosqlbench.engine.core.lifecycle.session.NBCommandInvoker;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer;
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBContainer;
import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBCommandResult;
diff --git a/engine-core/src/test/java/io/nosqlbench/engine/sandbox/SimRateSanityTest.java b/engine-core/src/test/java/io/nosqlbench/engine/sandbox/SimRateSanityTest.java
index fd799a3b4..761624069 100644
--- a/engine-core/src/test/java/io/nosqlbench/engine/sandbox/SimRateSanityTest.java
+++ b/engine-core/src/test/java/io/nosqlbench/engine/sandbox/SimRateSanityTest.java
@@ -17,7 +17,7 @@
package io.nosqlbench.engine.sandbox;
import io.nosqlbench.nb.api.config.standard.TestComponent;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.engine.api.activityapi.ratelimits.simrate.SimRate;
import io.nosqlbench.engine.api.activityapi.ratelimits.simrate.SimRateSpec;
import org.junit.jupiter.api.Disabled;
diff --git a/engine-core/src/test/java/io/nosqlbench/engine/sandbox/SimRateTest.java b/engine-core/src/test/java/io/nosqlbench/engine/sandbox/SimRateTest.java
index 2ce0a99a2..dddef78be 100644
--- a/engine-core/src/test/java/io/nosqlbench/engine/sandbox/SimRateTest.java
+++ b/engine-core/src/test/java/io/nosqlbench/engine/sandbox/SimRateTest.java
@@ -17,7 +17,7 @@
package io.nosqlbench.engine.sandbox;
import io.nosqlbench.nb.api.config.standard.TestComponent;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.engine.api.activityapi.ratelimits.simrate.SimRateSpec;
import io.nosqlbench.engine.api.activityapi.ratelimits.simrate.SimRate;
import org.junit.jupiter.api.Disabled;
diff --git a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/computefunctions/ComputeFunctionPluginInfo.java b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/computefunctions/ComputeFunctionPluginInfo.java
index b674d315a..3c706fae5 100644
--- a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/computefunctions/ComputeFunctionPluginInfo.java
+++ b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/computefunctions/ComputeFunctionPluginInfo.java
@@ -17,7 +17,7 @@
package io.nosqlbench.engine.extensions.computefunctions;
import io.nosqlbench.nb.api.extensions.ScriptingExtensionPluginInfo;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
import org.apache.logging.log4j.Logger;
diff --git a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/computefunctions/ComputeFunctions.java b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/computefunctions/ComputeFunctions.java
index 6d18539de..647940ef9 100644
--- a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/computefunctions/ComputeFunctions.java
+++ b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/computefunctions/ComputeFunctions.java
@@ -16,8 +16,8 @@
package io.nosqlbench.engine.extensions.computefunctions;
-import io.nosqlbench.nb.api.components.NBBaseComponent;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBBaseComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import java.util.Arrays;
import java.util.DoubleSummaryStatistics;
diff --git a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/example/ExamplePlugin.java b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/example/ExamplePlugin.java
index e6ffa6f08..df0c0094f 100644
--- a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/example/ExamplePlugin.java
+++ b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/example/ExamplePlugin.java
@@ -17,8 +17,8 @@
package io.nosqlbench.engine.extensions.example;
import io.nosqlbench.nb.api.extensions.SandboxPlugin;
-import io.nosqlbench.nb.api.components.NBBaseComponent;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBBaseComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
public class ExamplePlugin extends NBBaseComponent implements SandboxPlugin {
diff --git a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/example/ExamplePluginData.java b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/example/ExamplePluginData.java
index 41a8535db..182ef0ba2 100644
--- a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/example/ExamplePluginData.java
+++ b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/example/ExamplePluginData.java
@@ -17,7 +17,7 @@
package io.nosqlbench.engine.extensions.example;
import io.nosqlbench.nb.api.extensions.ScriptingExtensionPluginInfo;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
import org.apache.logging.log4j.Logger;
diff --git a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/globalvars/GlobalVarsScriptingExtensionPluginData.java b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/globalvars/GlobalVarsScriptingExtensionPluginData.java
index a7fff201d..a7b1bdde2 100644
--- a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/globalvars/GlobalVarsScriptingExtensionPluginData.java
+++ b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/globalvars/GlobalVarsScriptingExtensionPluginData.java
@@ -17,7 +17,7 @@
package io.nosqlbench.engine.extensions.globalvars;
import io.nosqlbench.nb.api.extensions.ScriptingExtensionPluginInfo;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
import io.nosqlbench.virtdata.library.basics.core.threadstate.SharedState;
import org.apache.logging.log4j.Logger;
diff --git a/engine-extensions/src/test/java/io/nosqlbench/engine/extensions/csvoutput/CsvOutputPluginWriterTest.java b/engine-extensions/src/test/java/io/nosqlbench/engine/extensions/csvoutput/CsvOutputPluginWriterTest.java
index 95c66af8d..a4581fe7c 100644
--- a/engine-extensions/src/test/java/io/nosqlbench/engine/extensions/csvoutput/CsvOutputPluginWriterTest.java
+++ b/engine-extensions/src/test/java/io/nosqlbench/engine/extensions/csvoutput/CsvOutputPluginWriterTest.java
@@ -17,7 +17,7 @@
package io.nosqlbench.engine.extensions.csvoutput;
import io.nosqlbench.nb.api.csvoutput.CsvOutputPluginWriter;
-import io.nosqlbench.nb.api.components.NBBaseComponent;
+import io.nosqlbench.nb.api.components.core.NBBaseComponent;
import org.assertj.core.util.Files;
import org.graalvm.polyglot.Value;
import org.junit.jupiter.api.Test;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBMetricsBuffer.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBMetricsBuffer.java
deleted file mode 100644
index 901e573ad..000000000
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBMetricsBuffer.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2023 nosqlbench
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package io.nosqlbench.nb.api.components;
-
-import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetric;
-import io.nosqlbench.nb.api.engine.metrics.reporters.ConsoleReporter;
-
-import java.io.PrintStream;
-import java.util.ArrayList;
-import java.util.List;
-
-public class NBMetricsBuffer {
- private List summaryMetrics = new ArrayList<>();
- private PrintStream out = System.out;
-
- public void setPrintStream(PrintStream out) {
- this.out = out;
- }
-
- public List getSummaryMetrics() {
- return summaryMetrics;
- }
-
- public void setSummaryMetrics(List summaryMetrics) {
- this.summaryMetrics = summaryMetrics;
- }
-
- public void addSummaryMetric(NBMetric metric) {
- this.summaryMetrics.add(metric);
- }
-
- public void clearSummaryMetrics() {
- this.summaryMetrics.clear();
- }
-
- public void printMetricSummary(NBComponent caller) {
- try(ConsoleReporter summaryReporter = new NBCreators.ConsoleReporterBuilder(caller, this.out).build()) {
- summaryReporter.reportOnce(summaryMetrics);
- }
- }
-}
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBBaseComponent.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBBaseComponent.java
similarity index 86%
rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBBaseComponent.java
rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBBaseComponent.java
index ea6d2739c..fcd0efbf5 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBBaseComponent.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBBaseComponent.java
@@ -14,27 +14,32 @@
* limitations under the License.
*/
-package io.nosqlbench.nb.api.components;
+package io.nosqlbench.nb.api.components.core;
import io.nosqlbench.nb.api.components.decorators.NBTokenWords;
import io.nosqlbench.nb.api.components.events.ComponentOutOfScope;
import io.nosqlbench.nb.api.components.events.DownEvent;
import io.nosqlbench.nb.api.components.events.NBEvent;
import io.nosqlbench.nb.api.components.events.UpEvent;
+import io.nosqlbench.nb.api.config.params.ElementData;
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetric;
import io.nosqlbench.nb.api.labels.NBLabels;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
public class NBBaseComponent extends NBBaseComponentMetrics implements NBComponent, NBTokenWords {
private final static Logger logger = LogManager.getLogger("RUNTIME");
protected final NBComponent parent;
protected final NBLabels labels;
private final List children = new ArrayList<>();
+ private long endAt=0L;
+ private final long startAt;
protected NBMetricsBuffer metricsBuffer = new NBMetricsBuffer();
protected boolean bufferOrphanedMetrics = false;
+ private ConcurrentHashMap props = new ConcurrentHashMap<>();
public NBBaseComponent(NBComponent parentComponent) {
this(parentComponent, NBLabels.forKV());
@@ -42,6 +47,7 @@ public class NBBaseComponent extends NBBaseComponentMetrics implements NBCompone
public NBBaseComponent(NBComponent parentComponent, NBLabels componentSpecificLabelsOnly) {
this.labels = componentSpecificLabelsOnly;
+ this.startAt = System.nanoTime();
if (parentComponent != null) {
parent = parentComponent;
parent.attachChild(this);
@@ -134,6 +140,7 @@ public class NBBaseComponent extends NBBaseComponentMetrics implements NBCompone
*/
protected void teardown() {
logger.debug("tearing down " + description());
+ this.endAt = System.nanoTime();
}
@Override
@@ -220,4 +227,32 @@ public class NBBaseComponent extends NBBaseComponentMetrics implements NBCompone
}
}
+ @Override
+ public long getNanosSinceStart() {
+ if (endAt==0) {
+ return System.nanoTime()-startAt;
+ } else {
+ return endAt-startAt;
+ }
+ }
+
+ @Override
+ public Optional getComponentProp(String name) {
+ if (this.props!=null && this.props.containsKey(name)) {
+ return Optional.ofNullable(this.props.get(name));
+ } else if (this.getParent()!=null) {
+ return this.getParent().getComponentProp(name);
+ } else {
+ return Optional.empty();
+ }
+ }
+
+ @Override
+ public NBComponentProps setComponentProp(String name, String value) {
+ if (this.props==null) {
+ this.props = new ConcurrentHashMap<>();
+ }
+ props.put(name, value);
+ return this;
+ }
}
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBBaseComponentMetrics.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBBaseComponentMetrics.java
similarity index 98%
rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBBaseComponentMetrics.java
rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBBaseComponentMetrics.java
index b297f3ba8..48ab89a65 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBBaseComponentMetrics.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBBaseComponentMetrics.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package io.nosqlbench.nb.api.components;
+package io.nosqlbench.nb.api.components.core;
import io.nosqlbench.nb.api.tagging.TagFilter;
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetric;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponent.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponent.java
similarity index 94%
rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponent.java
rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponent.java
index 56f0ac300..d3a407092 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponent.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponent.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package io.nosqlbench.nb.api.components;
+package io.nosqlbench.nb.api.components.core;
import io.nosqlbench.nb.api.components.decorators.NBProviderSearch;
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetric;
@@ -42,7 +42,8 @@ public interface NBComponent extends
NBComponentMetrics,
NBComponentServices,
NBComponentEvents,
- NBProviderSearch {
+ NBProviderSearch,
+ NBComponentProps {
NBComponent EMPTY_COMPONENT = new NBBaseComponent(null);
@@ -62,4 +63,6 @@ public interface NBComponent extends
void close() throws RuntimeException;
void reportExecutionMetric(NBMetric m);
+
+ long getNanosSinceStart();
}
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentErrorHandler.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentErrorHandler.java
similarity index 93%
rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentErrorHandler.java
rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentErrorHandler.java
index 8e02f1862..8ef790e5c 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentErrorHandler.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentErrorHandler.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package io.nosqlbench.nb.api.components;
+package io.nosqlbench.nb.api.components.core;
public interface NBComponentErrorHandler {
public void notifyException(Thread t, Throwable e);
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentEvents.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentEvents.java
similarity index 94%
rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentEvents.java
rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentEvents.java
index ee04142ab..e4508e16f 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentEvents.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentEvents.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package io.nosqlbench.nb.api.components;
+package io.nosqlbench.nb.api.components.core;
import io.nosqlbench.nb.api.components.events.NBEvent;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentExecutionScope.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentExecutionScope.java
similarity index 97%
rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentExecutionScope.java
rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentExecutionScope.java
index d8d00e16c..a2ae8e5fb 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentExecutionScope.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentExecutionScope.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package io.nosqlbench.nb.api.components;
+package io.nosqlbench.nb.api.components.core;
import io.nosqlbench.nb.api.components.events.ComponentOutOfScope;
import io.nosqlbench.nb.api.config.standard.TestComponent;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentFinder.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentFinder.java
similarity index 97%
rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentFinder.java
rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentFinder.java
index 75a3f4e60..d8c50c7b5 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentFinder.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentFinder.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package io.nosqlbench.nb.api.components;
+package io.nosqlbench.nb.api.components.core;
import io.nosqlbench.nb.api.tagging.TagFilter;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentFormats.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentFormats.java
similarity index 97%
rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentFormats.java
rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentFormats.java
index ea95b9871..040267e71 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentFormats.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentFormats.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package io.nosqlbench.nb.api.components;
+package io.nosqlbench.nb.api.components.core;
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetric;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentLoader.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentLoader.java
similarity index 97%
rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentLoader.java
rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentLoader.java
index 17c1f4987..9701d05b3 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentLoader.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentLoader.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package io.nosqlbench.nb.api.components;
+package io.nosqlbench.nb.api.components.core;
import io.nosqlbench.nb.annotations.Service;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentMetrics.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentMetrics.java
similarity index 97%
rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentMetrics.java
rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentMetrics.java
index 8a9c357c3..47689cbca 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentMetrics.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentMetrics.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package io.nosqlbench.nb.api.components;
+package io.nosqlbench.nb.api.components.core;
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetric;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentServices.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentServices.java
similarity index 93%
rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentServices.java
rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentServices.java
index e191ea1e5..052d993f7 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentServices.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentServices.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package io.nosqlbench.nb.api.components;
+package io.nosqlbench.nb.api.components.core;
public interface NBComponentServices {
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentTraversal.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentTraversal.java
similarity index 98%
rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentTraversal.java
rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentTraversal.java
index 9df67b9b4..52defc699 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBComponentTraversal.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBComponentTraversal.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package io.nosqlbench.nb.api.components;
+package io.nosqlbench.nb.api.components.core;
import java.util.Iterator;
import java.util.LinkedList;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBCreators.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBCreators.java
similarity index 99%
rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBCreators.java
rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBCreators.java
index 1a7103472..e52502471 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBCreators.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBCreators.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package io.nosqlbench.nb.api.components;
+package io.nosqlbench.nb.api.components.core;
import io.nosqlbench.nb.api.csvoutput.CsvOutputPluginWriter;
import com.codahale.metrics.Meter;
@@ -38,7 +38,6 @@ import com.codahale.metrics.MetricFilter;
import org.apache.logging.log4j.Marker;
import java.io.PrintStream;
-import java.net.URI;
import java.util.*;
import java.nio.file.Path;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBFinders.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBFinders.java
similarity index 99%
rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBFinders.java
rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBFinders.java
index dc452dce5..7e03c3e5c 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBFinders.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBFinders.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package io.nosqlbench.nb.api.components;
+package io.nosqlbench.nb.api.components.core;
import io.nosqlbench.nb.api.engine.metrics.instruments.*;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBMetricsBuffer.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBMetricsBuffer.java
new file mode 100644
index 000000000..67998a274
--- /dev/null
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBMetricsBuffer.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright (c) 2023 nosqlbench
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package io.nosqlbench.nb.api.components.core;
+
+import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetric;
+import io.nosqlbench.nb.api.engine.metrics.reporters.ConsoleReporter;
+import io.nosqlbench.nb.api.engine.util.Unit;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+
+public class NBMetricsBuffer {
+
+ private final static Logger logger = LogManager.getLogger(NBMetricsBuffer.class);
+ private List summaryMetrics = new ArrayList<>();
+// private PrintStream out = System.out;
+
+// public void setPrintStream(PrintStream out) {
+// this.out = out;
+// }
+
+ public List getSummaryMetrics() {
+ return summaryMetrics;
+ }
+
+ public void setSummaryMetrics(List summaryMetrics) {
+ this.summaryMetrics = summaryMetrics;
+ }
+
+ public void addSummaryMetric(NBMetric metric) {
+ this.summaryMetrics.add(metric);
+ }
+
+ public void clearSummaryMetrics() {
+ this.summaryMetrics.clear();
+ }
+
+ public void printMetricSummary(NBComponent caller) {
+ caller.getComponentProp(NBComponentProps.SUMMARY).ifPresent(
+ summary -> {
+ Config config = new Config(caller, summary);
+ for (PrintStream channel : config.fullChannels) {
+ try (ConsoleReporter summaryReporter = new NBCreators.ConsoleReporterBuilder(caller, channel).build()) {
+ summaryReporter.reportOnce(summaryMetrics);
+ }
+ }
+ for (PrintStream channel : config.briefChannels) {
+ try (ConsoleReporter summaryReporter = new NBCreators.ConsoleReporterBuilder(caller, channel).build()) {
+ summaryReporter.reportCountsOnce(summaryMetrics);
+ }
+ }
+
+ }
+ );
+ }
+
+ private static class Config {
+ final List fullChannels = new ArrayList<>();
+ final List briefChannels = new ArrayList<>();
+
+ public Config(NBComponent caller, String reportSummaryTo) {
+ final String[] destinationSpecs = reportSummaryTo.split(", *");
+ long seconds = caller.getNanosSinceStart() / 1_000_000_000;
+
+ for (final String spec : destinationSpecs)
+ if ((null != spec) && !spec.isBlank()) {
+ final String[] split = spec.split(":", 2);
+ final String summaryTo = split[0];
+ final long summaryWhen = (2 == split.length) ? (Unit.secondsFor(split[1]).orElseThrow()) : 0;
+
+ PrintStream out = null;
+ switch (summaryTo.toLowerCase()) {
+ case "console":
+ case "stdout":
+ out = System.out;
+ break;
+ case "stderr":
+ out = System.err;
+ break;
+ default:
+ final String outName = summaryTo
+ .replaceAll("_SESSION_", caller.getLabels().valueOf("session"))
+ .replaceAll("_LOGS_", caller.getComponentProp("logsdir").orElseThrow());
+ try {
+ out = new PrintStream(new FileOutputStream(outName));
+ break;
+ } catch (final FileNotFoundException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ if (seconds > summaryWhen) fullChannels.add(out);
+ else {
+ logger.debug("Summarizing counting metrics only to {} with scenario duration of {}S (<{})", spec, summaryWhen, summaryWhen);
+ briefChannels.add(out);
+ }
+ }
+
+ }
+ }
+
+}
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBNamedElement.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBNamedElement.java
similarity index 93%
rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBNamedElement.java
rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBNamedElement.java
index fa4bde533..f67cf9c33 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBNamedElement.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBNamedElement.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package io.nosqlbench.nb.api.components;
+package io.nosqlbench.nb.api.components.core;
public interface NBNamedElement {
String getName();
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBParentComponentInjection.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBParentComponentInjection.java
similarity index 93%
rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/NBParentComponentInjection.java
rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBParentComponentInjection.java
index 95e122d83..62a11001f 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/NBParentComponentInjection.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/NBParentComponentInjection.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package io.nosqlbench.nb.api.components;
+package io.nosqlbench.nb.api.components.core;
public interface NBParentComponentInjection {
void applyParentComponent(NBComponent component);
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/PeriodicTaskComponent.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/PeriodicTaskComponent.java
similarity index 98%
rename from nb-api/src/main/java/io/nosqlbench/nb/api/components/PeriodicTaskComponent.java
rename to nb-api/src/main/java/io/nosqlbench/nb/api/components/core/PeriodicTaskComponent.java
index f86cee2df..06bdd6c61 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/PeriodicTaskComponent.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/core/PeriodicTaskComponent.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package io.nosqlbench.nb.api.components;
+package io.nosqlbench.nb.api.components.core;
import io.nosqlbench.nb.api.labels.NBLabels;
import org.apache.logging.log4j.LogManager;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/components/events/ComponentOutOfScope.java b/nb-api/src/main/java/io/nosqlbench/nb/api/components/events/ComponentOutOfScope.java
index 1f2c70069..171208434 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/components/events/ComponentOutOfScope.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/components/events/ComponentOutOfScope.java
@@ -17,7 +17,7 @@
package io.nosqlbench.nb.api.components.events;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
public class ComponentOutOfScope implements NBEvent {
private final NBComponent component;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/config/standard/TestComponent.java b/nb-api/src/main/java/io/nosqlbench/nb/api/config/standard/TestComponent.java
index c00c58888..f7fa6f6cc 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/config/standard/TestComponent.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/config/standard/TestComponent.java
@@ -17,8 +17,8 @@
package io.nosqlbench.nb.api.config.standard;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
-import io.nosqlbench.nb.api.components.NBBaseComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBBaseComponent;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/csvoutput/CsvOutputPluginWriter.java b/nb-api/src/main/java/io/nosqlbench/nb/api/csvoutput/CsvOutputPluginWriter.java
index a670bfdde..5330b0ddc 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/csvoutput/CsvOutputPluginWriter.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/csvoutput/CsvOutputPluginWriter.java
@@ -16,8 +16,8 @@
package io.nosqlbench.nb.api.csvoutput;
-import io.nosqlbench.nb.api.components.NBBaseComponent;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBBaseComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
import org.graalvm.polyglot.Value;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/activityimpl/ActivityDef.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/activityimpl/ActivityDef.java
index ddc2db66f..945bd70ab 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/activityimpl/ActivityDef.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/activityimpl/ActivityDef.java
@@ -16,7 +16,7 @@
package io.nosqlbench.nb.api.engine.activityimpl;
-import io.nosqlbench.nb.api.components.NBNamedElement;
+import io.nosqlbench.nb.api.components.core.NBNamedElement;
import io.nosqlbench.nb.api.errors.BasicError;
import io.nosqlbench.nb.api.labels.NBLabelSpec;
import io.nosqlbench.nb.api.labels.NBLabels;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/CapabilityHook.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/CapabilityHook.java
index f29fdf7f7..37781f34a 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/CapabilityHook.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/CapabilityHook.java
@@ -17,8 +17,8 @@
package io.nosqlbench.nb.api.engine.metrics;
import com.codahale.metrics.*;
-import io.nosqlbench.nb.api.components.NBBaseComponent;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBBaseComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import java.util.HashMap;
import java.util.Map;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/ClassicHistoListener.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/ClassicHistoListener.java
index 10b5efe50..cf5c9563a 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/ClassicHistoListener.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/ClassicHistoListener.java
@@ -17,7 +17,7 @@
package io.nosqlbench.nb.api.engine.metrics;
import com.codahale.metrics.*;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/ClassicTimerListener.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/ClassicTimerListener.java
index 43d6af01a..ef5cb3ae2 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/ClassicTimerListener.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/ClassicTimerListener.java
@@ -19,7 +19,7 @@ package io.nosqlbench.nb.api.engine.metrics;
import com.codahale.metrics.ExponentiallyDecayingReservoir;
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.Timer;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/HistoIntervalLogger.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/HistoIntervalLogger.java
index 15a656217..3ba20a6cd 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/HistoIntervalLogger.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/HistoIntervalLogger.java
@@ -16,7 +16,7 @@
package io.nosqlbench.nb.api.engine.metrics;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import org.HdrHistogram.EncodableHistogram;
import org.HdrHistogram.HistogramLogWriter;
import org.apache.logging.log4j.Logger;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/HistoStatsLogger.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/HistoStatsLogger.java
index dc8da52cd..5fa381451 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/HistoStatsLogger.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/HistoStatsLogger.java
@@ -16,7 +16,7 @@
package io.nosqlbench.nb.api.engine.metrics;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import org.HdrHistogram.EncodableHistogram;
import org.HdrHistogram.Histogram;
import org.apache.logging.log4j.Logger;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/instruments/NBFunctionGauge.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/instruments/NBFunctionGauge.java
index e69824c35..5e9b14300 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/instruments/NBFunctionGauge.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/instruments/NBFunctionGauge.java
@@ -18,7 +18,7 @@ package io.nosqlbench.nb.api.engine.metrics.instruments;
import io.nosqlbench.nb.api.labels.NBLabeledElement;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import java.util.Map;
import java.util.function.Supplier;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/instruments/NBVariableGauge.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/instruments/NBVariableGauge.java
index 19e92238d..94c7d498d 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/instruments/NBVariableGauge.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/instruments/NBVariableGauge.java
@@ -18,7 +18,7 @@ package io.nosqlbench.nb.api.engine.metrics.instruments;
import io.nosqlbench.nb.api.labels.NBLabeledElement;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
/**
* Use this gauge type when you are setting the gauge value directly. It is merely a holder
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/ConsoleReporter.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/ConsoleReporter.java
index ab6c7b434..bd5b0f163 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/ConsoleReporter.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/ConsoleReporter.java
@@ -19,9 +19,9 @@ package io.nosqlbench.nb.api.engine.metrics.reporters;
import com.codahale.metrics.Timer;
import com.codahale.metrics.*;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
-import io.nosqlbench.nb.api.components.NBFinders;
-import io.nosqlbench.nb.api.components.PeriodicTaskComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBFinders;
+import io.nosqlbench.nb.api.components.core.PeriodicTaskComponent;
import io.nosqlbench.nb.api.engine.metrics.instruments.*;
import java.io.PrintStream;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/CsvReporter.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/CsvReporter.java
index 20b7839ee..e51ccd9fd 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/CsvReporter.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/CsvReporter.java
@@ -19,8 +19,8 @@ package io.nosqlbench.nb.api.engine.metrics.reporters;
import com.codahale.metrics.*;
import io.nosqlbench.nb.api.labels.NBLabelUtils;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBComponent;
-import io.nosqlbench.nb.api.components.PeriodicTaskComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
+import io.nosqlbench.nb.api.components.core.PeriodicTaskComponent;
import io.nosqlbench.nb.api.engine.metrics.instruments.*;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/Log4JMetricsReporter.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/Log4JMetricsReporter.java
index cbaf8bafb..e9fee0442 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/Log4JMetricsReporter.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/Log4JMetricsReporter.java
@@ -18,10 +18,10 @@ package io.nosqlbench.nb.api.engine.metrics.reporters;
import com.codahale.metrics.*;
import io.nosqlbench.nb.api.labels.NBLabels;
-import io.nosqlbench.nb.api.components.NBCreators;
-import io.nosqlbench.nb.api.components.NBComponent;
-import io.nosqlbench.nb.api.components.NBFinders;
-import io.nosqlbench.nb.api.components.PeriodicTaskComponent;
+import io.nosqlbench.nb.api.components.core.NBCreators;
+import io.nosqlbench.nb.api.components.core.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBFinders;
+import io.nosqlbench.nb.api.components.core.PeriodicTaskComponent;
import io.nosqlbench.nb.api.engine.metrics.instruments.*;
import org.apache.logging.log4j.Marker;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/PromPushReporterComponent.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/PromPushReporterComponent.java
index 2c4b2921c..587ea2d4c 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/PromPushReporterComponent.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/reporters/PromPushReporterComponent.java
@@ -19,8 +19,8 @@ package io.nosqlbench.nb.api.engine.metrics.reporters;
import io.nosqlbench.nb.api.errors.BasicError;
import io.nosqlbench.nb.api.labels.NBLabels;
import io.nosqlbench.nb.api.system.NBEnvironment;
-import io.nosqlbench.nb.api.components.NBComponent;
-import io.nosqlbench.nb.api.components.PeriodicTaskComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
+import io.nosqlbench.nb.api.components.core.PeriodicTaskComponent;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/wrappers/RelevancyMeasures.java b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/wrappers/RelevancyMeasures.java
index 85735988e..c0e2d4ba3 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/wrappers/RelevancyMeasures.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/engine/metrics/wrappers/RelevancyMeasures.java
@@ -19,7 +19,7 @@ package io.nosqlbench.nb.api.engine.metrics.wrappers;
import io.nosqlbench.nb.api.labels.NBLabeledElement;
import io.nosqlbench.nb.api.labels.NBLabels;
import io.nosqlbench.nb.api.engine.metrics.DoubleSummaryGauge;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import java.util.ArrayList;
import java.util.List;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/extensions/ScriptingExtensionPluginInfo.java b/nb-api/src/main/java/io/nosqlbench/nb/api/extensions/ScriptingExtensionPluginInfo.java
index 6def00895..4b4013f15 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/extensions/ScriptingExtensionPluginInfo.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/extensions/ScriptingExtensionPluginInfo.java
@@ -16,7 +16,7 @@
package io.nosqlbench.nb.api.extensions;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
import org.apache.logging.log4j.Logger;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/histo/HdrHistoLog.java b/nb-api/src/main/java/io/nosqlbench/nb/api/histo/HdrHistoLog.java
index b4fc5fcc2..721e286d3 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/histo/HdrHistoLog.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/histo/HdrHistoLog.java
@@ -18,8 +18,8 @@ package io.nosqlbench.nb.api.histo;
import io.nosqlbench.nb.api.engine.metrics.HistoIntervalLogger;
import io.nosqlbench.nb.api.engine.util.Unit;
-import io.nosqlbench.nb.api.components.NBBaseComponent;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBBaseComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import java.io.File;
import java.util.regex.Pattern;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/histo/HistoStats.java b/nb-api/src/main/java/io/nosqlbench/nb/api/histo/HistoStats.java
index 44e24d719..6d02c2773 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/histo/HistoStats.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/histo/HistoStats.java
@@ -18,8 +18,8 @@ package io.nosqlbench.nb.api.histo;
import io.nosqlbench.nb.api.engine.metrics.HistoStatsLogger;
import io.nosqlbench.nb.api.engine.util.Unit;
-import io.nosqlbench.nb.api.components.NBBaseComponent;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBBaseComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import java.io.File;
import java.util.concurrent.TimeUnit;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/http/HttpPlugin.java b/nb-api/src/main/java/io/nosqlbench/nb/api/http/HttpPlugin.java
index b272edc15..d1db122df 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/http/HttpPlugin.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/http/HttpPlugin.java
@@ -16,8 +16,8 @@
package io.nosqlbench.nb.api.http;
-import io.nosqlbench.nb.api.components.NBBaseComponent;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBBaseComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import java.io.IOException;
import java.net.URI;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/loaders/BundledExtensionsLoader.java b/nb-api/src/main/java/io/nosqlbench/nb/api/loaders/BundledExtensionsLoader.java
index c375c0ead..562ddea1d 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/loaders/BundledExtensionsLoader.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/loaders/BundledExtensionsLoader.java
@@ -17,7 +17,7 @@
package io.nosqlbench.nb.api.loaders;
import io.nosqlbench.nb.api.extensions.ScriptingExtensionPluginInfo;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.annotations.Service;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/optimizers/BobyqaOptimizerInstance.java b/nb-api/src/main/java/io/nosqlbench/nb/api/optimizers/BobyqaOptimizerInstance.java
index ee03381a8..29f7b41d5 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/optimizers/BobyqaOptimizerInstance.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/optimizers/BobyqaOptimizerInstance.java
@@ -16,8 +16,8 @@
package io.nosqlbench.nb.api.optimizers;
-import io.nosqlbench.nb.api.components.NBBaseComponent;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBBaseComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import org.apache.commons.math4.legacy.optim.*;
import org.apache.commons.math4.legacy.optim.nonlinear.scalar.GoalType;
import org.apache.commons.math4.legacy.optim.nonlinear.scalar.ObjectiveFunction;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/s3uploader/S3Uploader.java b/nb-api/src/main/java/io/nosqlbench/nb/api/s3uploader/S3Uploader.java
index faaf34913..1dd1ab4f8 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/s3uploader/S3Uploader.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/s3uploader/S3Uploader.java
@@ -24,8 +24,8 @@ import io.nosqlbench.nb.api.addins.s3.s3urlhandler.S3ClientCache;
import io.nosqlbench.nb.api.addins.s3.s3urlhandler.S3UrlFields;
import io.nosqlbench.nb.api.metadata.ScenarioMetadata;
import io.nosqlbench.nb.api.system.NBEnvironment;
-import io.nosqlbench.nb.api.components.NBBaseComponent;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBBaseComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/shutdown/NBShutdownHook.java b/nb-api/src/main/java/io/nosqlbench/nb/api/shutdown/NBShutdownHook.java
index d52e31391..22862e40c 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/shutdown/NBShutdownHook.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/shutdown/NBShutdownHook.java
@@ -16,8 +16,8 @@
package io.nosqlbench.nb.api.shutdown;
-import io.nosqlbench.nb.api.components.NBBaseComponent;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBBaseComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/nb-api/src/main/java/io/nosqlbench/nb/api/tagging/TagFilter.java b/nb-api/src/main/java/io/nosqlbench/nb/api/tagging/TagFilter.java
index e4527b484..4de51c322 100644
--- a/nb-api/src/main/java/io/nosqlbench/nb/api/tagging/TagFilter.java
+++ b/nb-api/src/main/java/io/nosqlbench/nb/api/tagging/TagFilter.java
@@ -18,7 +18,7 @@ package io.nosqlbench.nb.api.tagging;
import io.nosqlbench.nb.api.engine.util.Tagged;
import io.nosqlbench.nb.api.labels.NBLabeledElement;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import java.util.*;
import java.util.function.BiFunction;
diff --git a/nb-api/src/test/java/io/nosqlbench/nb/api/components/AttachedMetricsSummaryReporterTest.java b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/AttachedMetricsSummaryReporterTest.java
similarity index 98%
rename from nb-api/src/test/java/io/nosqlbench/nb/api/components/AttachedMetricsSummaryReporterTest.java
rename to nb-api/src/test/java/io/nosqlbench/nb/api/components/core/AttachedMetricsSummaryReporterTest.java
index 062a32500..ade28a4b1 100644
--- a/nb-api/src/test/java/io/nosqlbench/nb/api/components/AttachedMetricsSummaryReporterTest.java
+++ b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/AttachedMetricsSummaryReporterTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package io.nosqlbench.nb.api.components;
+package io.nosqlbench.nb.api.components.core;
import io.nosqlbench.nb.api.config.standard.TestComponent;
import io.nosqlbench.nb.api.engine.metrics.instruments.NBFunctionGauge;
diff --git a/nb-api/src/test/java/io/nosqlbench/nb/api/components/NBBaseComponentMetricsTest.java b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBBaseComponentMetricsTest.java
similarity index 94%
rename from nb-api/src/test/java/io/nosqlbench/nb/api/components/NBBaseComponentMetricsTest.java
rename to nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBBaseComponentMetricsTest.java
index 8dde44523..0c4df26ff 100644
--- a/nb-api/src/test/java/io/nosqlbench/nb/api/components/NBBaseComponentMetricsTest.java
+++ b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBBaseComponentMetricsTest.java
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-package io.nosqlbench.nb.api.components;
+package io.nosqlbench.nb.api.components.core;
-import io.nosqlbench.nb.api.components.NBBaseComponentMetrics;
+import io.nosqlbench.nb.api.components.core.NBBaseComponentMetrics;
import io.nosqlbench.nb.api.engine.metrics.instruments.NBBaseMetric;
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetric;
import org.junit.jupiter.api.Test;
diff --git a/nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentFormatsTest.java b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentFormatsTest.java
similarity index 90%
rename from nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentFormatsTest.java
rename to nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentFormatsTest.java
index 0c82ec9c9..ed748371d 100644
--- a/nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentFormatsTest.java
+++ b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentFormatsTest.java
@@ -14,12 +14,12 @@
* limitations under the License.
*/
-package io.nosqlbench.nb.api.components;
+package io.nosqlbench.nb.api.components.core;
import static org.assertj.core.api.Assertions.assertThat;
-import io.nosqlbench.nb.api.components.NBComponent;
-import io.nosqlbench.nb.api.components.NBComponentFormats;
+import io.nosqlbench.nb.api.components.core.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponentFormats;
import io.nosqlbench.nb.api.config.standard.TestComponent;
import org.junit.jupiter.api.Test;
public class NBComponentFormatsTest {
diff --git a/nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentLifecycleTest.java b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentLifecycleTest.java
similarity index 97%
rename from nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentLifecycleTest.java
rename to nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentLifecycleTest.java
index 8d1636f58..74ea4ebc3 100644
--- a/nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentLifecycleTest.java
+++ b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentLifecycleTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package io.nosqlbench.nb.api.components;
+package io.nosqlbench.nb.api.components.core;
import io.nosqlbench.nb.api.config.standard.TestComponent;
import org.apache.logging.log4j.LogManager;
diff --git a/nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentScaffoldingTest.java b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentScaffoldingTest.java
similarity index 97%
rename from nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentScaffoldingTest.java
rename to nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentScaffoldingTest.java
index 619023d94..cc6a5d8e4 100644
--- a/nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentScaffoldingTest.java
+++ b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentScaffoldingTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package io.nosqlbench.nb.api.components;
+package io.nosqlbench.nb.api.components.core;
import io.nosqlbench.nb.api.config.standard.TestComponent;
import org.apache.logging.log4j.LogManager;
diff --git a/nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentServicesTest.java b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentServicesTest.java
similarity index 97%
rename from nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentServicesTest.java
rename to nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentServicesTest.java
index 4ded98415..16662e928 100644
--- a/nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentServicesTest.java
+++ b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentServicesTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package io.nosqlbench.nb.api.components;
+package io.nosqlbench.nb.api.components.core;
import io.nosqlbench.nb.api.config.standard.TestComponent;
import io.nosqlbench.nb.api.engine.metrics.instruments.NBFunctionGauge;
diff --git a/nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentTraversalTest.java b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentTraversalTest.java
similarity index 93%
rename from nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentTraversalTest.java
rename to nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentTraversalTest.java
index a8c963f09..adfb481fc 100644
--- a/nb-api/src/test/java/io/nosqlbench/nb/api/components/NBComponentTraversalTest.java
+++ b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBComponentTraversalTest.java
@@ -14,10 +14,10 @@
* limitations under the License.
*/
-package io.nosqlbench.nb.api.components;
+package io.nosqlbench.nb.api.components.core;
-import io.nosqlbench.nb.api.components.NBComponent;
-import io.nosqlbench.nb.api.components.NBComponentTraversal;
+import io.nosqlbench.nb.api.components.core.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponentTraversal;
import io.nosqlbench.nb.api.config.standard.TestComponent;
import org.junit.jupiter.api.Test;
diff --git a/nb-api/src/test/java/io/nosqlbench/nb/api/components/NBMetricsQueryTest.java b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBMetricsQueryTest.java
similarity index 97%
rename from nb-api/src/test/java/io/nosqlbench/nb/api/components/NBMetricsQueryTest.java
rename to nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBMetricsQueryTest.java
index ae250d3ac..beecdfc05 100644
--- a/nb-api/src/test/java/io/nosqlbench/nb/api/components/NBMetricsQueryTest.java
+++ b/nb-api/src/test/java/io/nosqlbench/nb/api/components/core/NBMetricsQueryTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package io.nosqlbench.nb.api.components;
+package io.nosqlbench.nb.api.components.core;
import io.nosqlbench.nb.api.config.standard.TestComponent;
import io.nosqlbench.nb.api.engine.metrics.instruments.NBBaseMetric;
diff --git a/nb-api/src/test/java/io/nosqlbench/nb/api/config/standard/TestComponentViewTest.java b/nb-api/src/test/java/io/nosqlbench/nb/api/config/standard/TestComponentViewTest.java
index ce95bd530..68045f3c5 100644
--- a/nb-api/src/test/java/io/nosqlbench/nb/api/config/standard/TestComponentViewTest.java
+++ b/nb-api/src/test/java/io/nosqlbench/nb/api/config/standard/TestComponentViewTest.java
@@ -16,8 +16,7 @@
package io.nosqlbench.nb.api.config.standard;
-import io.nosqlbench.nb.api.components.NBComponent;
-import io.nosqlbench.nb.api.config.standard.TestComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/nbr-examples/src/test/java/io/nosqlbench/nbr/examples/injava/NB_cocycledelay_bursty.java b/nbr-examples/src/test/java/io/nosqlbench/nbr/examples/injava/NB_cocycledelay_bursty.java
index c571ab878..eda7766f6 100644
--- a/nbr-examples/src/test/java/io/nosqlbench/nbr/examples/injava/NB_cocycledelay_bursty.java
+++ b/nbr-examples/src/test/java/io/nosqlbench/nbr/examples/injava/NB_cocycledelay_bursty.java
@@ -21,7 +21,7 @@ import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContaine
import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBBaseCommand;
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricGauge;
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricTimer;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.nb.api.components.events.ParamChange;
import io.nosqlbench.engine.api.activityapi.core.Activity;
import io.nosqlbench.engine.api.activityapi.ratelimits.simrate.CycleRateSpec;
diff --git a/nbr-examples/src/test/java/io/nosqlbench/nbr/examples/injavascript/ScriptExampleTests.java b/nbr-examples/src/test/java/io/nosqlbench/nbr/examples/injavascript/ScriptExampleTests.java
index 0e69c3a9c..0ac9a9995 100644
--- a/nbr-examples/src/test/java/io/nosqlbench/nbr/examples/injavascript/ScriptExampleTests.java
+++ b/nbr-examples/src/test/java/io/nosqlbench/nbr/examples/injavascript/ScriptExampleTests.java
@@ -19,7 +19,7 @@ package io.nosqlbench.nbr.examples.injavascript;
import io.nosqlbench.engine.cmdstream.BasicScriptBuffer;
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer;
import io.nosqlbench.nb.api.config.standard.TestComponent;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBContainer;
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBCommandParams;
import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBCommandResult;
diff --git a/nbr/src/test/java/io/nosqlbench/engine/core/script/MetricsIntegrationTest.java b/nbr/src/test/java/io/nosqlbench/engine/core/script/MetricsIntegrationTest.java
index 7aa42a54b..87426d9e1 100644
--- a/nbr/src/test/java/io/nosqlbench/engine/core/script/MetricsIntegrationTest.java
+++ b/nbr/src/test/java/io/nosqlbench/engine/core/script/MetricsIntegrationTest.java
@@ -18,7 +18,7 @@ package io.nosqlbench.engine.core.script;
import com.codahale.metrics.Histogram;
import io.nosqlbench.nb.api.config.standard.TestComponent;
-import io.nosqlbench.nb.api.components.NBComponent;
+import io.nosqlbench.nb.api.components.core.NBComponent;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;