diff --git a/src/Scaffolding/Definitions.php b/src/Scaffolding/Definitions.php
index 9b22139c3b9a8c13ee708471a1a578638a1b0ddd..0de4c45ef2e31ce0b259184ac93368893d4bfdaf 100644
--- a/src/Scaffolding/Definitions.php
+++ b/src/Scaffolding/Definitions.php
@@ -2,6 +2,7 @@
 
 namespace Grifart\Tables\Scaffolding;
 
+use Grifart\ClassScaffolder\Capabilities\Capability;
 use Grifart\ClassScaffolder\Definition\ClassDefinition;
 
 
@@ -29,19 +30,22 @@ final class Definitions implements \IteratorAggregate
 		);
 	}
 
-	public function getRowClass(): ClassDefinition
+	public function rowClassWith(Capability $capability, Capability ...$capabilities): self
 	{
-		return $this->rowClass;
+		$this->rowClass = $this->rowClass->with($capability, ...$capabilities);
+		return $this;
 	}
 
-	public function getModificationsClass(): ClassDefinition
+	public function modificationsClassWith(Capability $capability, Capability ...$capabilities): self
 	{
-		return $this->modificationsClass;
+		$this->modificationsClass = $this->modificationsClass->with($capability, ...$capabilities);
+		return $this;
 	}
 
-	public function getTableClass(): ClassDefinition
+	public function tableClassWith(Capability $capability, Capability ...$capabilities): self
 	{
-		return $this->tableClass;
+		$this->tableClass = $this->tableClass->with($capability, ...$capabilities);
+		return $this;
 	}
 
 
diff --git a/src/Scaffolding/Scaffolding.php b/src/Scaffolding/Scaffolding.php
index 1a8e8bdc053d204786d93265149488ab84b5b76e..4f4278e437b071b2c4183c27f215af9558fb4928 100644
--- a/src/Scaffolding/Scaffolding.php
+++ b/src/Scaffolding/Scaffolding.php
@@ -39,45 +39,13 @@ final class Scaffolding
 		string $primaryKeyClass
 	): Definitions
 	{
-		return self::buildersForPgTable(
-			$pgReflector,
-			$mapper,
-			$schema,
-			$table,
-			$rowClassName,
-			$modificationsClassName,
-			$tableClassName,
-			$primaryKeyClass,
-		);
-	}
-
-
-	/**
-	 * Usage:
-	 * ```php
-	 * $builders = Scaffolding::buildersForPgTable(...);
-	 * $builders->getRowClass()->decorate(...);
-	 * return $builders;
-	 * ```
-	 */
-	public static function buildersForPgTable(
-		PostgresReflector $pgReflector,
-		TypeMapper $mapper,
-		string $schema,
-		string $tableClass,
-		string $rowClassName,
-		string $modificationsClassName,
-		string $tableClassName,
-		string $primaryKeyClass
-	): Definitions
-	{
-		$columnsNativeTypes = $pgReflector->retrieveColumnInfo($schema, $tableClass);
+		$columnsNativeTypes = $pgReflector->retrieveColumnInfo($schema, $table);
 		if (\count($columnsNativeTypes) === 0) {
 			throw new \LogicException('No columns found for given configuration. Does referenced table exist?');
 		}
 
-		$location = function(string $column) use ($schema, $tableClass): string {
-			return self::location($schema, $tableClass, $column);
+		$location = function(string $column) use ($schema, $table): string {
+			return self::location($schema, $table, $column);
 		};
 
 		$columnsPhpTypes = [];
@@ -109,7 +77,7 @@ final class Scaffolding
 		$tableClass = (new ClassDefinition($tableClassName))
 			->with(new TableImplementation(
 				$schema,
-				$tableClass,
+				$table,
 				$primaryKeyClass,
 				$rowClassName,
 				$modificationsClassName,