diff --git a/Flowsharp.sln b/Flowsharp.sln
index d8ce4099e..7b88e75b5 100644
--- a/Flowsharp.sln
+++ b/Flowsharp.sln
@@ -17,6 +17,8 @@ ProjectSection(SolutionItems) = preProject
Nuget.Config = Nuget.Config
EndProjectSection
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Flowsharp.Abstractions", "src\Flowsharp.Abstractions\Flowsharp.Abstractions.csproj", "{3130C574-557C-4DA2-933E-AED7A9EBE48A}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -31,6 +33,10 @@ Global
{48EDB976-3227-4DFD-BBB3-3BC9AEA19A88}.Debug|Any CPU.Build.0 = Debug|Any CPU
{48EDB976-3227-4DFD-BBB3-3BC9AEA19A88}.Release|Any CPU.ActiveCfg = Release|Any CPU
{48EDB976-3227-4DFD-BBB3-3BC9AEA19A88}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3130C574-557C-4DA2-933E-AED7A9EBE48A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3130C574-557C-4DA2-933E-AED7A9EBE48A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3130C574-557C-4DA2-933E-AED7A9EBE48A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3130C574-557C-4DA2-933E-AED7A9EBE48A}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -41,5 +47,6 @@ Global
GlobalSection(NestedProjects) = preSolution
{300EE2D5-54C5-46F2-AD03-BB43589EA074} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}
{48EDB976-3227-4DFD-BBB3-3BC9AEA19A88} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}
+ {3130C574-557C-4DA2-933E-AED7A9EBE48A} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925}
EndGlobalSection
EndGlobal
diff --git a/src/Flowsharp.Core/Models/IActivity.cs b/src/Flowsharp.Abstractions/Activities/IActivity.cs
similarity index 58%
rename from src/Flowsharp.Core/Models/IActivity.cs
rename to src/Flowsharp.Abstractions/Activities/IActivity.cs
index cd943c3ff..2179eea2b 100644
--- a/src/Flowsharp.Core/Models/IActivity.cs
+++ b/src/Flowsharp.Abstractions/Activities/IActivity.cs
@@ -1,4 +1,4 @@
-namespace Flowsharp.Models
+namespace Flowsharp.Activities
{
public interface IActivity
{
diff --git a/src/Flowsharp.Core/Expressions/IExpressionEvaluator.cs b/src/Flowsharp.Abstractions/Expressions/IExpressionEvaluator.cs
similarity index 100%
rename from src/Flowsharp.Core/Expressions/IExpressionEvaluator.cs
rename to src/Flowsharp.Abstractions/Expressions/IExpressionEvaluator.cs
diff --git a/src/Flowsharp.Core/Expressions/IWorkflowExpressionEvaluator.cs b/src/Flowsharp.Abstractions/Expressions/IWorkflowExpressionEvaluator.cs
similarity index 100%
rename from src/Flowsharp.Core/Expressions/IWorkflowExpressionEvaluator.cs
rename to src/Flowsharp.Abstractions/Expressions/IWorkflowExpressionEvaluator.cs
diff --git a/src/Flowsharp.Core/Expressions/WorkflowExpression.cs b/src/Flowsharp.Abstractions/Expressions/WorkflowExpression.cs
similarity index 100%
rename from src/Flowsharp.Core/Expressions/WorkflowExpression.cs
rename to src/Flowsharp.Abstractions/Expressions/WorkflowExpression.cs
diff --git a/src/Flowsharp.Abstractions/Flowsharp.Abstractions.csproj b/src/Flowsharp.Abstractions/Flowsharp.Abstractions.csproj
new file mode 100644
index 000000000..66e3fa082
--- /dev/null
+++ b/src/Flowsharp.Abstractions/Flowsharp.Abstractions.csproj
@@ -0,0 +1,13 @@
+
+
+
+ netstandard2.0
+ Flowsharp
+ latest
+
+
+
+
+
+
+
diff --git a/src/Flowsharp.Core/Handlers/IActivityHandler.cs b/src/Flowsharp.Abstractions/Handlers/IActivityHandler.cs
similarity index 97%
rename from src/Flowsharp.Core/Handlers/IActivityHandler.cs
rename to src/Flowsharp.Abstractions/Handlers/IActivityHandler.cs
index 583cb13aa..2f3ce8d42 100644
--- a/src/Flowsharp.Core/Handlers/IActivityHandler.cs
+++ b/src/Flowsharp.Abstractions/Handlers/IActivityHandler.cs
@@ -1,6 +1,7 @@
using System;
using System.Threading;
using System.Threading.Tasks;
+using Flowsharp.Activities;
using Flowsharp.Models;
using Flowsharp.Results;
diff --git a/src/Flowsharp.Core/Services/IActivityInvoker.cs b/src/Flowsharp.Abstractions/IActivityInvoker.cs
similarity index 92%
rename from src/Flowsharp.Core/Services/IActivityInvoker.cs
rename to src/Flowsharp.Abstractions/IActivityInvoker.cs
index 1c9b43b27..f83e3e1d2 100644
--- a/src/Flowsharp.Core/Services/IActivityInvoker.cs
+++ b/src/Flowsharp.Abstractions/IActivityInvoker.cs
@@ -1,9 +1,10 @@
using System.Threading;
using System.Threading.Tasks;
+using Flowsharp.Activities;
using Flowsharp.Models;
using Flowsharp.Results;
-namespace Flowsharp.Services
+namespace Flowsharp
{
public interface IActivityInvoker
{
diff --git a/src/Flowsharp.Core/Services/IWorkflowInvoker.cs b/src/Flowsharp.Abstractions/IWorkflowInvoker.cs
similarity index 94%
rename from src/Flowsharp.Core/Services/IWorkflowInvoker.cs
rename to src/Flowsharp.Abstractions/IWorkflowInvoker.cs
index af4478985..739c4ffb2 100644
--- a/src/Flowsharp.Core/Services/IWorkflowInvoker.cs
+++ b/src/Flowsharp.Abstractions/IWorkflowInvoker.cs
@@ -3,7 +3,7 @@ using System.Threading.Tasks;
using Flowsharp.Activities;
using Flowsharp.Models;
-namespace Flowsharp.Services
+namespace Flowsharp
{
public interface IWorkflowInvoker
{
diff --git a/src/Flowsharp.Core/Models/ActivityExecutionContext.cs b/src/Flowsharp.Abstractions/Models/ActivityExecutionContext.cs
similarity index 100%
rename from src/Flowsharp.Core/Models/ActivityExecutionContext.cs
rename to src/Flowsharp.Abstractions/Models/ActivityExecutionContext.cs
diff --git a/src/Flowsharp.Core/Models/Connection.cs b/src/Flowsharp.Abstractions/Models/Connection.cs
similarity index 100%
rename from src/Flowsharp.Core/Models/Connection.cs
rename to src/Flowsharp.Abstractions/Models/Connection.cs
diff --git a/src/Flowsharp.Core/Models/Endpoint.cs b/src/Flowsharp.Abstractions/Models/Endpoint.cs
similarity index 100%
rename from src/Flowsharp.Core/Models/Endpoint.cs
rename to src/Flowsharp.Abstractions/Models/Endpoint.cs
diff --git a/src/Flowsharp.Core/Models/SourceEndpoint.cs b/src/Flowsharp.Abstractions/Models/SourceEndpoint.cs
similarity index 100%
rename from src/Flowsharp.Core/Models/SourceEndpoint.cs
rename to src/Flowsharp.Abstractions/Models/SourceEndpoint.cs
diff --git a/src/Flowsharp.Core/Models/TargetEndpoint.cs b/src/Flowsharp.Abstractions/Models/TargetEndpoint.cs
similarity index 100%
rename from src/Flowsharp.Core/Models/TargetEndpoint.cs
rename to src/Flowsharp.Abstractions/Models/TargetEndpoint.cs
diff --git a/src/Flowsharp.Core/Models/Variables.cs b/src/Flowsharp.Abstractions/Models/Variables.cs
similarity index 100%
rename from src/Flowsharp.Core/Models/Variables.cs
rename to src/Flowsharp.Abstractions/Models/Variables.cs
diff --git a/src/Flowsharp.Core/Models/Workflow.cs b/src/Flowsharp.Abstractions/Models/Workflow.cs
similarity index 100%
rename from src/Flowsharp.Core/Models/Workflow.cs
rename to src/Flowsharp.Abstractions/Models/Workflow.cs
diff --git a/src/Flowsharp.Core/Models/WorkflowExecutionContext.cs b/src/Flowsharp.Abstractions/Models/WorkflowExecutionContext.cs
similarity index 100%
rename from src/Flowsharp.Core/Models/WorkflowExecutionContext.cs
rename to src/Flowsharp.Abstractions/Models/WorkflowExecutionContext.cs
diff --git a/src/Flowsharp.Core/Models/WorkflowExecutionScope.cs b/src/Flowsharp.Abstractions/Models/WorkflowExecutionScope.cs
similarity index 100%
rename from src/Flowsharp.Core/Models/WorkflowExecutionScope.cs
rename to src/Flowsharp.Abstractions/Models/WorkflowExecutionScope.cs
diff --git a/src/Flowsharp.Core/Models/WorkflowStatus.cs b/src/Flowsharp.Abstractions/Models/WorkflowStatus.cs
similarity index 100%
rename from src/Flowsharp.Core/Models/WorkflowStatus.cs
rename to src/Flowsharp.Abstractions/Models/WorkflowStatus.cs
diff --git a/src/Flowsharp.Core/Results/ActivityExecutionResult.cs b/src/Flowsharp.Abstractions/Results/ActivityExecutionResult.cs
similarity index 95%
rename from src/Flowsharp.Core/Results/ActivityExecutionResult.cs
rename to src/Flowsharp.Abstractions/Results/ActivityExecutionResult.cs
index 61d92d9d9..1578393b4 100644
--- a/src/Flowsharp.Core/Results/ActivityExecutionResult.cs
+++ b/src/Flowsharp.Abstractions/Results/ActivityExecutionResult.cs
@@ -2,7 +2,6 @@
using System.Threading;
using System.Threading.Tasks;
using Flowsharp.Models;
-using Flowsharp.Services;
namespace Flowsharp.Results
{
diff --git a/src/Flowsharp.Core/Results/IActivityExecutionResult.cs b/src/Flowsharp.Abstractions/Results/IActivityExecutionResult.cs
similarity index 92%
rename from src/Flowsharp.Core/Results/IActivityExecutionResult.cs
rename to src/Flowsharp.Abstractions/Results/IActivityExecutionResult.cs
index e5aa4e0fb..c33bdfab1 100644
--- a/src/Flowsharp.Core/Results/IActivityExecutionResult.cs
+++ b/src/Flowsharp.Abstractions/Results/IActivityExecutionResult.cs
@@ -1,7 +1,6 @@
using System.Threading;
using System.Threading.Tasks;
using Flowsharp.Models;
-using Flowsharp.Services;
namespace Flowsharp.Results
{
diff --git a/src/Flowsharp.Core/Serialization/Formatters/ITokenFormatter.cs b/src/Flowsharp.Abstractions/Serialization/Formatters/ITokenFormatter.cs
similarity index 100%
rename from src/Flowsharp.Core/Serialization/Formatters/ITokenFormatter.cs
rename to src/Flowsharp.Abstractions/Serialization/Formatters/ITokenFormatter.cs
diff --git a/src/Flowsharp.Core/Serialization/IWorkflowSerializer.cs b/src/Flowsharp.Abstractions/Serialization/IWorkflowSerializer.cs
similarity index 100%
rename from src/Flowsharp.Core/Serialization/IWorkflowSerializer.cs
rename to src/Flowsharp.Abstractions/Serialization/IWorkflowSerializer.cs
diff --git a/src/Flowsharp.Core/Serialization/Tokenizers/ITokenizer.cs b/src/Flowsharp.Abstractions/Serialization/Tokenizers/ITokenizer.cs
similarity index 100%
rename from src/Flowsharp.Core/Serialization/Tokenizers/ITokenizer.cs
rename to src/Flowsharp.Abstractions/Serialization/Tokenizers/ITokenizer.cs
diff --git a/src/Flowsharp.Core/Serialization/Tokenizers/ITokenizerInvoker.cs b/src/Flowsharp.Abstractions/Serialization/Tokenizers/ITokenizerInvoker.cs
similarity index 100%
rename from src/Flowsharp.Core/Serialization/Tokenizers/ITokenizerInvoker.cs
rename to src/Flowsharp.Abstractions/Serialization/Tokenizers/ITokenizerInvoker.cs
diff --git a/src/Flowsharp.Core/Serialization/Tokenizers/IWorkflowTokenizer.cs b/src/Flowsharp.Abstractions/Serialization/Tokenizers/IWorkflowTokenizer.cs
similarity index 100%
rename from src/Flowsharp.Core/Serialization/Tokenizers/IWorkflowTokenizer.cs
rename to src/Flowsharp.Abstractions/Serialization/Tokenizers/IWorkflowTokenizer.cs
diff --git a/src/Flowsharp.Core/Serialization/WorkflowTokenizationContext.cs b/src/Flowsharp.Abstractions/Serialization/Tokenizers/WorkflowTokenizationContext.cs
similarity index 76%
rename from src/Flowsharp.Core/Serialization/WorkflowTokenizationContext.cs
rename to src/Flowsharp.Abstractions/Serialization/Tokenizers/WorkflowTokenizationContext.cs
index 9815c31d4..747048dec 100644
--- a/src/Flowsharp.Core/Serialization/WorkflowTokenizationContext.cs
+++ b/src/Flowsharp.Abstractions/Serialization/Tokenizers/WorkflowTokenizationContext.cs
@@ -1,7 +1,7 @@
using System.Collections.Generic;
-using Flowsharp.Models;
+using Flowsharp.Activities;
-namespace Flowsharp.Serialization
+namespace Flowsharp.Serialization.Tokenizers
{
public class WorkflowTokenizationContext
{
diff --git a/src/Flowsharp.Core/Models/Activity.cs b/src/Flowsharp.Core/Activities/Activity.cs
similarity index 62%
rename from src/Flowsharp.Core/Models/Activity.cs
rename to src/Flowsharp.Core/Activities/Activity.cs
index e993ab21d..0253a789e 100644
--- a/src/Flowsharp.Core/Models/Activity.cs
+++ b/src/Flowsharp.Core/Activities/Activity.cs
@@ -1,4 +1,5 @@
-using Newtonsoft.Json;
+using Flowsharp.Activities;
+using Newtonsoft.Json;
namespace Flowsharp.Models
{
diff --git a/src/Flowsharp.Core/Services/ActivityInvoker.cs b/src/Flowsharp.Core/ActivityInvoker.cs
similarity index 98%
rename from src/Flowsharp.Core/Services/ActivityInvoker.cs
rename to src/Flowsharp.Core/ActivityInvoker.cs
index 0c7b756bc..1dfa7df0f 100644
--- a/src/Flowsharp.Core/Services/ActivityInvoker.cs
+++ b/src/Flowsharp.Core/ActivityInvoker.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
+using Flowsharp.Activities;
using Flowsharp.Handlers;
using Flowsharp.Models;
using Flowsharp.Results;
diff --git a/src/Flowsharp.Core/Flowsharp.Core.csproj b/src/Flowsharp.Core/Flowsharp.Core.csproj
index c1f163431..a9d3a8930 100644
--- a/src/Flowsharp.Core/Flowsharp.Core.csproj
+++ b/src/Flowsharp.Core/Flowsharp.Core.csproj
@@ -18,4 +18,8 @@
+
+
+
+
diff --git a/src/Flowsharp.Core/Handlers/ActivityHandler.cs b/src/Flowsharp.Core/Handlers/ActivityHandler.cs
index ed6755afb..61416b052 100644
--- a/src/Flowsharp.Core/Handlers/ActivityHandler.cs
+++ b/src/Flowsharp.Core/Handlers/ActivityHandler.cs
@@ -1,6 +1,7 @@
using System;
using System.Threading;
using System.Threading.Tasks;
+using Flowsharp.Activities;
using Flowsharp.Models;
using Flowsharp.Results;
diff --git a/src/Flowsharp.Core/Serialization/Tokenizers/ActivityTokenizer.cs b/src/Flowsharp.Core/Serialization/Tokenizers/ActivityTokenizer.cs
index eb2903f94..19459d578 100644
--- a/src/Flowsharp.Core/Serialization/Tokenizers/ActivityTokenizer.cs
+++ b/src/Flowsharp.Core/Serialization/Tokenizers/ActivityTokenizer.cs
@@ -1,3 +1,4 @@
+using Flowsharp.Activities;
using Flowsharp.Models;
using Flowsharp.Services;
using Newtonsoft.Json.Linq;
diff --git a/src/Flowsharp.Core/Serialization/Tokenizers/WorkflowTokenizer.cs b/src/Flowsharp.Core/Serialization/Tokenizers/WorkflowTokenizer.cs
index 62c44ee65..08910bfbb 100644
--- a/src/Flowsharp.Core/Serialization/Tokenizers/WorkflowTokenizer.cs
+++ b/src/Flowsharp.Core/Serialization/Tokenizers/WorkflowTokenizer.cs
@@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
+using Flowsharp.Activities;
using Flowsharp.Handlers;
using Flowsharp.Models;
using Flowsharp.Services;
diff --git a/src/Flowsharp.Core/Services/WorkflowInvoker.cs b/src/Flowsharp.Core/WorkflowInvoker.cs
similarity index 99%
rename from src/Flowsharp.Core/Services/WorkflowInvoker.cs
rename to src/Flowsharp.Core/WorkflowInvoker.cs
index ed4902c55..3a4954cf6 100644
--- a/src/Flowsharp.Core/Services/WorkflowInvoker.cs
+++ b/src/Flowsharp.Core/WorkflowInvoker.cs
@@ -2,6 +2,7 @@
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
+using Flowsharp.Activities;
using Flowsharp.Extensions;
using Flowsharp.Models;
using Flowsharp.Results;
diff --git a/src/Flowsharp.Samples.Console/Program.cs b/src/Flowsharp.Samples.Console/Program.cs
index 24541a731..2e2e73adf 100644
--- a/src/Flowsharp.Samples.Console/Program.cs
+++ b/src/Flowsharp.Samples.Console/Program.cs
@@ -24,7 +24,7 @@ namespace Flowsharp.Samples.Console
.AddSingleton()
.AddSingleton()
.AddSingleton()
- //.AddSingleton()
+ .AddSingleton()
.AddSingleton()
.AddSingleton()
.AddSingleton()