diff --git a/Plugins/BeamableCore/Source/BeamableCore/Private/AutoGen/FederationInfo.cpp b/Plugins/BeamableCore/Source/BeamableCore/Private/AutoGen/FederationInfo.cpp
index 3148e4eab..bbd080223 100644
--- a/Plugins/BeamableCore/Source/BeamableCore/Private/AutoGen/FederationInfo.cpp
+++ b/Plugins/BeamableCore/Source/BeamableCore/Private/AutoGen/FederationInfo.cpp
@@ -9,21 +9,21 @@ void UFederationInfo::BeamSerializeProperties(TUnrealJsonSerializer& Serializer)
 {
 	Serializer->WriteValue(TEXT("service"), Service);
 	Serializer->WriteValue(TEXT("namespace"), Namespace);
-	UBeamJsonUtils::SerializeOptional<UOptionalJsonNodeWrapper*>(TEXT("settings"), &Settings, Serializer);
+	UBeamJsonUtils::SerializeJsonObject(TEXT("settings"), Settings, Serializer);
 }
 
 void UFederationInfo::BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const
 {
 	Serializer->WriteValue(TEXT("service"), Service);
 	Serializer->WriteValue(TEXT("namespace"), Namespace);
-	UBeamJsonUtils::SerializeOptional<UOptionalJsonNodeWrapper*>(TEXT("settings"), &Settings, Serializer);		
+	UBeamJsonUtils::SerializeJsonObject(TEXT("settings"), Settings, Serializer);		
 }
 
 void UFederationInfo::BeamDeserializeProperties(const TSharedPtr<FJsonObject>& Bag)
 {
 	Service = Bag->GetStringField(TEXT("service"));
 	Namespace = Bag->GetStringField(TEXT("namespace"));
-	UBeamJsonUtils::DeserializeOptional<UOptionalJsonNodeWrapper*>("settings", Bag, Settings, OuterOwner);
+	UBeamJsonUtils::DeserializeJsonObject(TEXT("settings"), Bag, Settings, OuterOwner);
 }
 
 
diff --git a/Plugins/BeamableCore/Source/BeamableCore/Private/AutoGen/FederationInfoLibrary.cpp b/Plugins/BeamableCore/Source/BeamableCore/Private/AutoGen/FederationInfoLibrary.cpp
index a277d5eab..98aed6006 100644
--- a/Plugins/BeamableCore/Source/BeamableCore/Private/AutoGen/FederationInfoLibrary.cpp
+++ b/Plugins/BeamableCore/Source/BeamableCore/Private/AutoGen/FederationInfoLibrary.cpp
@@ -22,21 +22,19 @@ FString UFederationInfoLibrary::FederationInfoToJsonString(const UFederationInfo
 	return Result;
 }	
 
-UFederationInfo* UFederationInfoLibrary::Make(FString Service, FString Namespace, FOptionalOptionalJsonNodeWrapper Settings, UObject* Outer)
+UFederationInfo* UFederationInfoLibrary::Make(FString Service, FString Namespace, UObject* Outer)
 {
 	auto Serializable = NewObject<UFederationInfo>(Outer);
 	Serializable->Service = Service;
 	Serializable->Namespace = Namespace;
-	Serializable->Settings = Settings;
 	
 	return Serializable;
 }
 
-void UFederationInfoLibrary::Break(const UFederationInfo* Serializable, FString& Service, FString& Namespace, FOptionalOptionalJsonNodeWrapper& Settings)
+void UFederationInfoLibrary::Break(const UFederationInfo* Serializable, FString& Service, FString& Namespace)
 {
 	Service = Serializable->Service;
 	Namespace = Serializable->Namespace;
-	Settings = Serializable->Settings;
 		
 }
 
diff --git a/Plugins/BeamableCore/Source/BeamableCore/Private/AutoGen/OptionalJsonNodeWrapper.cpp b/Plugins/BeamableCore/Source/BeamableCore/Private/AutoGen/OptionalJsonNodeWrapper.cpp
deleted file mode 100644
index 5336c18ac..000000000
--- a/Plugins/BeamableCore/Source/BeamableCore/Private/AutoGen/OptionalJsonNodeWrapper.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-
-#include "BeamableCore/Public/AutoGen/OptionalJsonNodeWrapper.h"
-#include "Serialization/BeamJsonUtils.h"
-
-
-
-
-void UOptionalJsonNodeWrapper::BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const
-{
-	UBeamJsonUtils::SerializeOptional<FString>(TEXT("node"), &Node, Serializer);
-}
-
-void UOptionalJsonNodeWrapper::BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const
-{
-	UBeamJsonUtils::SerializeOptional<FString>(TEXT("node"), &Node, Serializer);		
-}
-
-void UOptionalJsonNodeWrapper::BeamDeserializeProperties(const TSharedPtr<FJsonObject>& Bag)
-{
-	UBeamJsonUtils::DeserializeOptional<FString>("node", Bag, Node, OuterOwner);
-}
-
-
-
diff --git a/Plugins/BeamableCore/Source/BeamableCore/Private/AutoGen/OptionalJsonNodeWrapperLibrary.cpp b/Plugins/BeamableCore/Source/BeamableCore/Private/AutoGen/OptionalJsonNodeWrapperLibrary.cpp
deleted file mode 100644
index c5c0bd670..000000000
--- a/Plugins/BeamableCore/Source/BeamableCore/Private/AutoGen/OptionalJsonNodeWrapperLibrary.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-
-#include "BeamableCore/Public/AutoGen/OptionalJsonNodeWrapperLibrary.h"
-
-#include "CoreMinimal.h"
-
-
-FString UOptionalJsonNodeWrapperLibrary::OptionalJsonNodeWrapperToJsonString(const UOptionalJsonNodeWrapper* Serializable, const bool Pretty)
-{
-	FString Result = FString{};
-	if(Pretty)
-	{
-		TUnrealPrettyJsonSerializer JsonSerializer = TJsonStringWriter<TPrettyJsonPrintPolicy<TCHAR>>::Create(&Result);
-		Serializable->BeamSerialize(JsonSerializer);
-		JsonSerializer->Close();
-	}
-	else
-	{
-		TUnrealJsonSerializer JsonSerializer = TJsonStringWriter<TCondensedJsonPrintPolicy<TCHAR>>::Create(&Result);
-		Serializable->BeamSerialize(JsonSerializer);
-		JsonSerializer->Close();			
-	}
-	return Result;
-}	
-
-UOptionalJsonNodeWrapper* UOptionalJsonNodeWrapperLibrary::Make(FOptionalString Node, UObject* Outer)
-{
-	auto Serializable = NewObject<UOptionalJsonNodeWrapper>(Outer);
-	Serializable->Node = Node;
-	
-	return Serializable;
-}
-
-void UOptionalJsonNodeWrapperLibrary::Break(const UOptionalJsonNodeWrapper* Serializable, FOptionalString& Node)
-{
-	Node = Serializable->Node;
-		
-}
-
diff --git a/Plugins/BeamableCore/Source/BeamableCore/Private/AutoGen/Optionals/OptionalOptionalJsonNodeWrapper.cpp b/Plugins/BeamableCore/Source/BeamableCore/Private/AutoGen/Optionals/OptionalOptionalJsonNodeWrapper.cpp
deleted file mode 100644
index bdbbdcb12..000000000
--- a/Plugins/BeamableCore/Source/BeamableCore/Private/AutoGen/Optionals/OptionalOptionalJsonNodeWrapper.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-
-#include "BeamableCore/Public/AutoGen/Optionals/OptionalOptionalJsonNodeWrapper.h"
-
-FOptionalOptionalJsonNodeWrapper::FOptionalOptionalJsonNodeWrapper()
-{
-	Val = nullptr;
-	IsSet = false;
-}
-
-FOptionalOptionalJsonNodeWrapper::FOptionalOptionalJsonNodeWrapper(UOptionalJsonNodeWrapper* Val): Val(Val)
-{
-	IsSet = true;
-}
-
-const void* FOptionalOptionalJsonNodeWrapper::GetAddr() const { return &Val; }
-
-void FOptionalOptionalJsonNodeWrapper::Set(const void* Data)
-{
-	Val = *((UOptionalJsonNodeWrapper**)Data);
-	IsSet = true;
-}
\ No newline at end of file
diff --git a/Plugins/BeamableCore/Source/BeamableCore/Private/AutoGen/Optionals/OptionalOptionalJsonNodeWrapperLibrary.cpp b/Plugins/BeamableCore/Source/BeamableCore/Private/AutoGen/Optionals/OptionalOptionalJsonNodeWrapperLibrary.cpp
deleted file mode 100644
index 1f78a7df0..000000000
--- a/Plugins/BeamableCore/Source/BeamableCore/Private/AutoGen/Optionals/OptionalOptionalJsonNodeWrapperLibrary.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-#include "AutoGen/Optionals/OptionalOptionalJsonNodeWrapperLibrary.h"
-
-FOptionalOptionalJsonNodeWrapper UOptionalOptionalJsonNodeWrapperLibrary::MakeOptional(UOptionalJsonNodeWrapper* Value)
-{
-	FOptionalOptionalJsonNodeWrapper Optional;
-	Optional.Val = Value;
-	Optional.IsSet = true;
-	return Optional;
-}
-
-FOptionalOptionalJsonNodeWrapper UOptionalOptionalJsonNodeWrapperLibrary::Conv_OptionalFromValue(UOptionalJsonNodeWrapper* Value)
-{
-	FOptionalOptionalJsonNodeWrapper Optional;
-	Optional.Val = Value;
-	Optional.IsSet = true;
-	return Optional;
-}
-
-bool UOptionalOptionalJsonNodeWrapperLibrary::HasValue(const FOptionalOptionalJsonNodeWrapper& Optional, UOptionalJsonNodeWrapper*& Value)
-{
-	Value = Optional.Val;
-	return Optional.IsSet;
-}
-
-UOptionalJsonNodeWrapper* UOptionalOptionalJsonNodeWrapperLibrary::GetOptionalValue(const FOptionalOptionalJsonNodeWrapper& Optional, UOptionalJsonNodeWrapper* DefaultValue, bool& WasSet)
-{
-	WasSet = Optional.IsSet;
-	return WasSet ? Optional.Val : DefaultValue;
-}
-
diff --git a/Plugins/BeamableCore/Source/BeamableCore/Private/AutoGen/SupportedFederation.cpp b/Plugins/BeamableCore/Source/BeamableCore/Private/AutoGen/SupportedFederation.cpp
index 9481ad5a8..01322e330 100644
--- a/Plugins/BeamableCore/Source/BeamableCore/Private/AutoGen/SupportedFederation.cpp
+++ b/Plugins/BeamableCore/Source/BeamableCore/Private/AutoGen/SupportedFederation.cpp
@@ -8,22 +8,22 @@
 void USupportedFederation::BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const
 {
 	Serializer->WriteValue(TEXT("type"), UFederationTypeLibrary::FederationTypeToSerializationName(Type));
+	UBeamJsonUtils::SerializeJsonObject(TEXT("settings"), Settings, Serializer);
 	UBeamJsonUtils::SerializeOptional<FString>(TEXT("nameSpace"), &NameSpace, Serializer);
-	UBeamJsonUtils::SerializeOptional<UOptionalJsonNodeWrapper*>(TEXT("settings"), &Settings, Serializer);
 }
 
 void USupportedFederation::BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const
 {
 	Serializer->WriteValue(TEXT("type"), UFederationTypeLibrary::FederationTypeToSerializationName(Type));
-	UBeamJsonUtils::SerializeOptional<FString>(TEXT("nameSpace"), &NameSpace, Serializer);
-	UBeamJsonUtils::SerializeOptional<UOptionalJsonNodeWrapper*>(TEXT("settings"), &Settings, Serializer);		
+	UBeamJsonUtils::SerializeJsonObject(TEXT("settings"), Settings, Serializer);
+	UBeamJsonUtils::SerializeOptional<FString>(TEXT("nameSpace"), &NameSpace, Serializer);		
 }
 
 void USupportedFederation::BeamDeserializeProperties(const TSharedPtr<FJsonObject>& Bag)
 {
 	Type = UFederationTypeLibrary::SerializationNameToFederationType(Bag->GetStringField(TEXT("type")));
+	UBeamJsonUtils::DeserializeJsonObject(TEXT("settings"), Bag, Settings, OuterOwner);
 	UBeamJsonUtils::DeserializeOptional<FString>("nameSpace", Bag, NameSpace, OuterOwner);
-	UBeamJsonUtils::DeserializeOptional<UOptionalJsonNodeWrapper*>("settings", Bag, Settings, OuterOwner);
 }
 
 
diff --git a/Plugins/BeamableCore/Source/BeamableCore/Private/AutoGen/SupportedFederationLibrary.cpp b/Plugins/BeamableCore/Source/BeamableCore/Private/AutoGen/SupportedFederationLibrary.cpp
index 800dbc007..285702602 100644
--- a/Plugins/BeamableCore/Source/BeamableCore/Private/AutoGen/SupportedFederationLibrary.cpp
+++ b/Plugins/BeamableCore/Source/BeamableCore/Private/AutoGen/SupportedFederationLibrary.cpp
@@ -22,21 +22,19 @@ FString USupportedFederationLibrary::SupportedFederationToJsonString(const USupp
 	return Result;
 }	
 
-USupportedFederation* USupportedFederationLibrary::Make(EFederationType Type, FOptionalString NameSpace, FOptionalOptionalJsonNodeWrapper Settings, UObject* Outer)
+USupportedFederation* USupportedFederationLibrary::Make(EFederationType Type, FOptionalString NameSpace, UObject* Outer)
 {
 	auto Serializable = NewObject<USupportedFederation>(Outer);
 	Serializable->Type = Type;
 	Serializable->NameSpace = NameSpace;
-	Serializable->Settings = Settings;
 	
 	return Serializable;
 }
 
-void USupportedFederationLibrary::Break(const USupportedFederation* Serializable, EFederationType& Type, FOptionalString& NameSpace, FOptionalOptionalJsonNodeWrapper& Settings)
+void USupportedFederationLibrary::Break(const USupportedFederation* Serializable, EFederationType& Type, FOptionalString& NameSpace)
 {
 	Type = Serializable->Type;
 	NameSpace = Serializable->NameSpace;
-	Settings = Serializable->Settings;
 		
 }
 
diff --git a/Plugins/BeamableCore/Source/BeamableCore/Public/AutoGen/FederationInfo.h b/Plugins/BeamableCore/Source/BeamableCore/Public/AutoGen/FederationInfo.h
index e5ef0f705..959af5e96 100644
--- a/Plugins/BeamableCore/Source/BeamableCore/Public/AutoGen/FederationInfo.h
+++ b/Plugins/BeamableCore/Source/BeamableCore/Public/AutoGen/FederationInfo.h
@@ -3,7 +3,7 @@
 #include "CoreMinimal.h"
 
 #include "Serialization/BeamJsonSerializable.h"
-#include "BeamableCore/Public/AutoGen/Optionals/OptionalOptionalJsonNodeWrapper.h"
+#include "Dom/JsonObject.h"
 
 #include "FederationInfo.generated.h"
 
@@ -17,8 +17,7 @@ class BEAMABLECORE_API UFederationInfo : public UObject, public IBeamJsonSeriali
 	FString Service = {};
 	UPROPERTY(EditAnywhere, BlueprintReadWrite, DisplayName="Namespace", Category="Beam")
 	FString Namespace = {};
-	UPROPERTY(EditAnywhere, BlueprintReadWrite, DisplayName="Settings", Category="Beam")
-	FOptionalOptionalJsonNodeWrapper Settings = {};
+	TSharedPtr<FJsonObject> Settings = {};
 
 	
 
diff --git a/Plugins/BeamableCore/Source/BeamableCore/Public/AutoGen/FederationInfoLibrary.h b/Plugins/BeamableCore/Source/BeamableCore/Public/AutoGen/FederationInfoLibrary.h
index a35e64953..f73e34676 100644
--- a/Plugins/BeamableCore/Source/BeamableCore/Public/AutoGen/FederationInfoLibrary.h
+++ b/Plugins/BeamableCore/Source/BeamableCore/Public/AutoGen/FederationInfoLibrary.h
@@ -16,9 +16,9 @@ class BEAMABLECORE_API UFederationInfoLibrary : public UBlueprintFunctionLibrary
 	UFUNCTION(BlueprintPure, Category="Beam|Json", DisplayName="Beam - FederationInfo To JSON String")
 	static FString FederationInfoToJsonString(const UFederationInfo* Serializable, const bool Pretty);
 
-	UFUNCTION(BlueprintPure, Category="Beam|Backend", DisplayName="Beam - Make FederationInfo", meta=(DefaultToSelf="Outer", AdvancedDisplay="Settings, Outer", NativeMakeFunc))
-	static UFederationInfo* Make(FString Service, FString Namespace, FOptionalOptionalJsonNodeWrapper Settings, UObject* Outer);
+	UFUNCTION(BlueprintPure, Category="Beam|Backend", DisplayName="Beam - Make FederationInfo", meta=(DefaultToSelf="Outer", AdvancedDisplay="Outer", NativeMakeFunc))
+	static UFederationInfo* Make(FString Service, FString Namespace, UObject* Outer);
 
 	UFUNCTION(BlueprintPure, Category="Beam|Backend", DisplayName="Beam - Break FederationInfo", meta=(NativeBreakFunc))
-	static void Break(const UFederationInfo* Serializable, FString& Service, FString& Namespace, FOptionalOptionalJsonNodeWrapper& Settings);
+	static void Break(const UFederationInfo* Serializable, FString& Service, FString& Namespace);
 };
\ No newline at end of file
diff --git a/Plugins/BeamableCore/Source/BeamableCore/Public/AutoGen/OptionalJsonNodeWrapper.h b/Plugins/BeamableCore/Source/BeamableCore/Public/AutoGen/OptionalJsonNodeWrapper.h
deleted file mode 100644
index c5f708d7c..000000000
--- a/Plugins/BeamableCore/Source/BeamableCore/Public/AutoGen/OptionalJsonNodeWrapper.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#pragma once
-
-#include "CoreMinimal.h"
-
-#include "Serialization/BeamJsonSerializable.h"
-#include "BeamableCore/Public/AutoGen/Optionals/OptionalString.h"
-
-#include "OptionalJsonNodeWrapper.generated.h"
-
-UCLASS(BlueprintType, Category="Beam")
-class BEAMABLECORE_API UOptionalJsonNodeWrapper : public UObject, public IBeamJsonSerializableUObject
-{
-	GENERATED_BODY()
-
-public:
-	UPROPERTY(EditAnywhere, BlueprintReadWrite, DisplayName="Node", Category="Beam")
-	FOptionalString Node = {};
-
-	
-
-	virtual void BeamSerializeProperties(TUnrealJsonSerializer& Serializer) const override;
-	virtual void BeamSerializeProperties(TUnrealPrettyJsonSerializer& Serializer) const override;
-	virtual void BeamDeserializeProperties(const TSharedPtr<FJsonObject>& Bag) override;
-	
-};
\ No newline at end of file
diff --git a/Plugins/BeamableCore/Source/BeamableCore/Public/AutoGen/OptionalJsonNodeWrapperLibrary.h b/Plugins/BeamableCore/Source/BeamableCore/Public/AutoGen/OptionalJsonNodeWrapperLibrary.h
deleted file mode 100644
index 3e7accb13..000000000
--- a/Plugins/BeamableCore/Source/BeamableCore/Public/AutoGen/OptionalJsonNodeWrapperLibrary.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#pragma once
-
-#include "CoreMinimal.h"
-#include "BeamableCore/Public/AutoGen/OptionalJsonNodeWrapper.h"
-
-#include "OptionalJsonNodeWrapperLibrary.generated.h"
-
-
-UCLASS(BlueprintType, Category="Beam")
-class BEAMABLECORE_API UOptionalJsonNodeWrapperLibrary : public UBlueprintFunctionLibrary
-{
-	GENERATED_BODY()
-
-public:
-
-	UFUNCTION(BlueprintPure, Category="Beam|Json", DisplayName="Beam - OptionalJsonNodeWrapper To JSON String")
-	static FString OptionalJsonNodeWrapperToJsonString(const UOptionalJsonNodeWrapper* Serializable, const bool Pretty);
-
-	UFUNCTION(BlueprintPure, Category="Beam|Backend", DisplayName="Beam - Make OptionalJsonNodeWrapper", meta=(DefaultToSelf="Outer", AdvancedDisplay="Node, Outer", NativeMakeFunc))
-	static UOptionalJsonNodeWrapper* Make(FOptionalString Node, UObject* Outer);
-
-	UFUNCTION(BlueprintPure, Category="Beam|Backend", DisplayName="Beam - Break OptionalJsonNodeWrapper", meta=(NativeBreakFunc))
-	static void Break(const UOptionalJsonNodeWrapper* Serializable, FOptionalString& Node);
-};
\ No newline at end of file
diff --git a/Plugins/BeamableCore/Source/BeamableCore/Public/AutoGen/Optionals/OptionalOptionalJsonNodeWrapper.h b/Plugins/BeamableCore/Source/BeamableCore/Public/AutoGen/Optionals/OptionalOptionalJsonNodeWrapper.h
deleted file mode 100644
index ccadd08a5..000000000
--- a/Plugins/BeamableCore/Source/BeamableCore/Public/AutoGen/Optionals/OptionalOptionalJsonNodeWrapper.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#pragma once
-
-#include "CoreMinimal.h"
-#include "Serialization/BeamOptional.h"
-#include "BeamableCore/Public/AutoGen/OptionalJsonNodeWrapper.h"
-
-#include "OptionalOptionalJsonNodeWrapper.generated.h"
-
-// Has Native Make/Break require static blueprint pure functions to present as nodes that
-// don't require an execution pin connection. This is super relevant for Blueprint UX. 
-USTRUCT(BlueprintType, meta=(HasNativeMake="/Script/BeamableCore.OptionalOptionalJsonNodeWrapperLibrary.MakeOptional", BeamOptionalType="UOptionalJsonNodeWrapper*"))
-struct BEAMABLECORE_API FOptionalOptionalJsonNodeWrapper : public FBeamOptional
-{
-	GENERATED_BODY()
-
-	UPROPERTY(BlueprintReadOnly, EditAnywhere)
-	UOptionalJsonNodeWrapper* Val;
-
-	FOptionalOptionalJsonNodeWrapper();
-
-	explicit FOptionalOptionalJsonNodeWrapper(UOptionalJsonNodeWrapper* Val);
-
-	virtual const void* GetAddr() const override;
-
-	virtual void Set(const void* Data) override;
-};
\ No newline at end of file
diff --git a/Plugins/BeamableCore/Source/BeamableCore/Public/AutoGen/Optionals/OptionalOptionalJsonNodeWrapperLibrary.h b/Plugins/BeamableCore/Source/BeamableCore/Public/AutoGen/Optionals/OptionalOptionalJsonNodeWrapperLibrary.h
deleted file mode 100644
index 65c32af07..000000000
--- a/Plugins/BeamableCore/Source/BeamableCore/Public/AutoGen/Optionals/OptionalOptionalJsonNodeWrapperLibrary.h
+++ /dev/null
@@ -1,48 +0,0 @@
-#pragma once
-
-#include "CoreMinimal.h"
-#include "BeamableCore/Public/AutoGen/Optionals/OptionalOptionalJsonNodeWrapper.h"
-
-#include "OptionalOptionalJsonNodeWrapperLibrary.generated.h"
-
-UCLASS(BlueprintType)
-class BEAMABLECORE_API UOptionalOptionalJsonNodeWrapperLibrary : public UBlueprintFunctionLibrary
-{
-	GENERATED_BODY()
-public:	
-
-	/**
-	* @brief Constructs an FOptionalOptionalJsonNodeWrapper struct from the given value.	  
-	*/
-	UFUNCTION(BlueprintPure, Category="Beam|Optionals", meta=(DisplayName="Beam - Make Optional OptionalJsonNodeWrapper", NativeMakeFunc))
-	static FOptionalOptionalJsonNodeWrapper MakeOptional(UOptionalJsonNodeWrapper* Value);
-
-	/**
-	 * @brief Converts an UOptionalJsonNodeWrapper* into an FOptionalOptionalJsonNodeWrapper automatically.
-	 * @param Value The UOptionalJsonNodeWrapper* to convert.
-	 * @return An optional with the OptionalJsonNodeWrapper set as it's value.
-	 */
-	UFUNCTION(BlueprintPure, Category="Beam|Optionals", meta = (DisplayName = "Beam - OptionalJsonNodeWrapper To Optional", CompactNodeTitle = "->", BlueprintAutocast))
-	static FOptionalOptionalJsonNodeWrapper Conv_OptionalFromValue(UOptionalJsonNodeWrapper* Value);
-	
-	/**
-	 * @brief Use this when the behavior changes based on whether or not a value is set on the optional.
-	 * @param Optional The optional you wish to get data from.
-	 * @param Value The value in the optional. 
-	 * @return Whether or not the value was set. We provide no guarantees on what the value is if the optional is not set. 
-	 */
-	UFUNCTION(BlueprintCallable, Category="Beam|Optionals", meta=(DisplayName="Beam - Optional Has Value", ExpandBoolAsExecs="ReturnValue"))
-	static bool HasValue(const FOptionalOptionalJsonNodeWrapper& Optional, UOptionalJsonNodeWrapper*& Value);
-
-	/**
-	 * @brief Use this when the behaviour doesnt change based on whether or not the value is set, instead just provide a default value instead.
-	 * @param Optional The optional you wish to get data from.
-	 * @param DefaultValue The value that will be set if the Optional has no value in it.
-	 * @param WasSet Whether or not the value was set. When false, the return value is the given DefaultValue.   
-	 * @return The default value, if the Optional IS NOT set. The optional value, otherwise.
-	 */
-	UFUNCTION(BlueprintPure, Category="Beam|Optionals", meta=(DisplayName="Beam - Get Optional's OptionalJsonNodeWrapper Value"))
-	static UOptionalJsonNodeWrapper* GetOptionalValue(const FOptionalOptionalJsonNodeWrapper& Optional, UOptionalJsonNodeWrapper* DefaultValue, bool& WasSet);
-
-	
-};
diff --git a/Plugins/BeamableCore/Source/BeamableCore/Public/AutoGen/SupportedFederation.h b/Plugins/BeamableCore/Source/BeamableCore/Public/AutoGen/SupportedFederation.h
index 1a13f16ea..587852c1e 100644
--- a/Plugins/BeamableCore/Source/BeamableCore/Public/AutoGen/SupportedFederation.h
+++ b/Plugins/BeamableCore/Source/BeamableCore/Public/AutoGen/SupportedFederation.h
@@ -5,7 +5,7 @@
 #include "Serialization/BeamJsonSerializable.h"
 #include "BeamableCore/Public/AutoGen/Enums/FederationType.h"
 #include "BeamableCore/Public/AutoGen/Optionals/OptionalString.h"
-#include "BeamableCore/Public/AutoGen/Optionals/OptionalOptionalJsonNodeWrapper.h"
+#include "Dom/JsonObject.h"
 
 #include "SupportedFederation.generated.h"
 
@@ -17,10 +17,9 @@ class BEAMABLECORE_API USupportedFederation : public UObject, public IBeamJsonSe
 public:
 	UPROPERTY(EditAnywhere, BlueprintReadWrite, DisplayName="Type", Category="Beam")
 	EFederationType Type = {};
+	TSharedPtr<FJsonObject> Settings = {};
 	UPROPERTY(EditAnywhere, BlueprintReadWrite, DisplayName="Name Space", Category="Beam")
 	FOptionalString NameSpace = {};
-	UPROPERTY(EditAnywhere, BlueprintReadWrite, DisplayName="Settings", Category="Beam")
-	FOptionalOptionalJsonNodeWrapper Settings = {};
 
 	
 
diff --git a/Plugins/BeamableCore/Source/BeamableCore/Public/AutoGen/SupportedFederationLibrary.h b/Plugins/BeamableCore/Source/BeamableCore/Public/AutoGen/SupportedFederationLibrary.h
index 87c7c905f..5de4d0267 100644
--- a/Plugins/BeamableCore/Source/BeamableCore/Public/AutoGen/SupportedFederationLibrary.h
+++ b/Plugins/BeamableCore/Source/BeamableCore/Public/AutoGen/SupportedFederationLibrary.h
@@ -16,9 +16,9 @@ class BEAMABLECORE_API USupportedFederationLibrary : public UBlueprintFunctionLi
 	UFUNCTION(BlueprintPure, Category="Beam|Json", DisplayName="Beam - SupportedFederation To JSON String")
 	static FString SupportedFederationToJsonString(const USupportedFederation* Serializable, const bool Pretty);
 
-	UFUNCTION(BlueprintPure, Category="Beam|Backend", DisplayName="Beam - Make SupportedFederation", meta=(DefaultToSelf="Outer", AdvancedDisplay="NameSpace, Settings, Outer", NativeMakeFunc))
-	static USupportedFederation* Make(EFederationType Type, FOptionalString NameSpace, FOptionalOptionalJsonNodeWrapper Settings, UObject* Outer);
+	UFUNCTION(BlueprintPure, Category="Beam|Backend", DisplayName="Beam - Make SupportedFederation", meta=(DefaultToSelf="Outer", AdvancedDisplay="NameSpace, Outer", NativeMakeFunc))
+	static USupportedFederation* Make(EFederationType Type, FOptionalString NameSpace, UObject* Outer);
 
 	UFUNCTION(BlueprintPure, Category="Beam|Backend", DisplayName="Beam - Break SupportedFederation", meta=(NativeBreakFunc))
-	static void Break(const USupportedFederation* Serializable, EFederationType& Type, FOptionalString& NameSpace, FOptionalOptionalJsonNodeWrapper& Settings);
+	static void Break(const USupportedFederation* Serializable, EFederationType& Type, FOptionalString& NameSpace);
 };
\ No newline at end of file