diff --git a/CHANGELOG.md b/CHANGELOG.md
index e58ab56..27fb790 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,11 @@
+### version 3.0
+* update RestSharp to 109.0.1, this comes with many API breaking changes, some affecting us, see below:
+* removal of basic auth - our API no longer makes sense with RestSharp immutable clients.
+* switch from newtonsoft.json to system.text.json
+* add unit test project
+* drop all targets below net6.
+* OAuth1 is no longer supported, we no longer sign requests.
+* Request base classes are modified to remove support for signing requests.
### version 2.5
* added user/votes request route
* Add net6.0 as a target framework
diff --git a/pipeline.yml b/pipeline.yml
index 606df1f..6221c54 100644
--- a/pipeline.yml
+++ b/pipeline.yml
@@ -35,7 +35,6 @@ soc2:
hidden_email_list: dynamo_ws_access
repository: env.HARMONY_REPO
third_party_lib_paths:
- - "third_party"
- "bin\\release"
deployment:
diff --git a/src/AssemblyInfoGenerator/AssemblyInfo.cs b/src/AssemblyInfoGenerator/AssemblyInfo.cs
index d2985a6..e00c6f5 100644
--- a/src/AssemblyInfoGenerator/AssemblyInfo.cs
+++ b/src/AssemblyInfoGenerator/AssemblyInfo.cs
@@ -36,7 +36,7 @@
// to distinguish one build from another. AssemblyFileVersion is specified
// in AssemblyVersionInfo.cs so that it can be easily incremented by the
// automated build process.
-[assembly: AssemblyVersion("2.5.0.5065")]
+[assembly: AssemblyVersion("3.0.0.2886")]
// By default, the "Product version" shown in the file properties window is
@@ -55,4 +55,4 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyFileVersion("2.5.0.5065")]
+[assembly: AssemblyFileVersion("3.0.0.2886")]
diff --git a/src/AssemblyInfoGenerator/AssemblyInfo.tt b/src/AssemblyInfoGenerator/AssemblyInfo.tt
index 29f5cc2..9b8de4f 100644
--- a/src/AssemblyInfoGenerator/AssemblyInfo.tt
+++ b/src/AssemblyInfoGenerator/AssemblyInfo.tt
@@ -58,10 +58,10 @@ using System.Runtime.InteropServices;
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyFileVersion("<#= this.MajorVersion #>.<#= this.MinorVersion #>.<#= this.BuildNumber #>.<#= this.RevisionNumber #>")]
<#+
-int MajorVersion = 2;
-int MinorVersion = 5;
+int MajorVersion = 3;
+int MinorVersion = 0;
int BuildNumber = 0;
// The datetime baseline we choose using this algorithm will affect build number and all nuget packages uploaded
// Please only change when major or minor version got incremented
-int RevisionNumber = ((int)(DateTime.UtcNow - new DateTime(2022,1,1)).TotalDays)*10+((int)DateTime.UtcNow.Hour)/3;
+int RevisionNumber = ((int)(DateTime.UtcNow - new DateTime(2023,1,1)).TotalDays)*10+((int)DateTime.UtcNow.Hour)/3;
#>
diff --git a/src/GregClient.sln b/src/GregClient.sln
index df4b6ba..16ff6cb 100644
--- a/src/GregClient.sln
+++ b/src/GregClient.sln
@@ -5,7 +5,9 @@ VisualStudioVersion = 17.0.32014.148
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GregClient", "GregClient\GregClient.csproj", "{644207B4-7E7F-474A-952E-3453960D8A01}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AssemblyInfoGenerator", "AssemblyInfoGenerator\AssemblyInfoGenerator.csproj", "{1B9F8D94-D6D5-4151-BF72-0F6C20A85ABC}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AssemblyInfoGenerator", "AssemblyInfoGenerator\AssemblyInfoGenerator.csproj", "{133FC760-5699-46D9-BEA6-E816B5F01016}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GregClientTests", "GregClientTests\GregClientTests.csproj", "{04331317-6CF9-42EE-B6A8-2B08C608C810}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -17,10 +19,14 @@ Global
{644207B4-7E7F-474A-952E-3453960D8A01}.Debug|Any CPU.Build.0 = Debug|Any CPU
{644207B4-7E7F-474A-952E-3453960D8A01}.Release|Any CPU.ActiveCfg = Release|Any CPU
{644207B4-7E7F-474A-952E-3453960D8A01}.Release|Any CPU.Build.0 = Release|Any CPU
- {1B9F8D94-D6D5-4151-BF72-0F6C20A85ABC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {1B9F8D94-D6D5-4151-BF72-0F6C20A85ABC}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {1B9F8D94-D6D5-4151-BF72-0F6C20A85ABC}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {1B9F8D94-D6D5-4151-BF72-0F6C20A85ABC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {133FC760-5699-46D9-BEA6-E816B5F01016}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {133FC760-5699-46D9-BEA6-E816B5F01016}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {133FC760-5699-46D9-BEA6-E816B5F01016}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {133FC760-5699-46D9-BEA6-E816B5F01016}.Release|Any CPU.Build.0 = Release|Any CPU
+ {04331317-6CF9-42EE-B6A8-2B08C608C810}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {04331317-6CF9-42EE-B6A8-2B08C608C810}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {04331317-6CF9-42EE-B6A8-2B08C608C810}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {04331317-6CF9-42EE-B6A8-2B08C608C810}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/src/GregClient/App.config b/src/GregClient/App.config
index 3cf3ac5..296c08f 100644
--- a/src/GregClient/App.config
+++ b/src/GregClient/App.config
@@ -4,7 +4,4 @@
-
-
-
diff --git a/src/GregClient/AuthProviders/BasicProvider.cs b/src/GregClient/AuthProviders/BasicProvider.cs
deleted file mode 100644
index 80afef8..0000000
--- a/src/GregClient/AuthProviders/BasicProvider.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-using System;
-using RestSharp;
-using RestSharp.Authenticators;
-
-namespace Greg.AuthProviders
-{
- public class BasicProvider : IAuthProvider
- {
- private readonly string _username;
- private readonly string _password;
-
- public BasicProvider(string username, string password)
- {
- _username = username;
- _password = password;
- }
-
- public void SignRequest(ref RestRequest m, RestClient client)
- {
- // Use the HttpBasicAuthenticator to write the auth information
- // into the request header. This coincides with with the "basic"
- // authentication strategy on Greg.
- client.Authenticator = new HttpBasicAuthenticator(_username, _password);
- }
-
- public void Logout()
- {
- }
-
- public bool Login()
- {
- return true;
- }
-
- public LoginState LoginState
- {
- get { return LoginState.LoggedIn; }
- }
-
- public string Username
- {
- get { return _username; }
- }
-
- public event Func