diff --git a/CHANGELOG.md b/CHANGELOG.md
index b4c1168d76ffec6481549645b67dfd9b0ddc7737..3f647d04903c55da60b1d5b174958ad650760987 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
 # IPtProxy Changelog
 
+## 1.6.0
+- Update Snowflake to latest version 2.2.0.
+- Added `IPtProxyObfs4ProxyVersion` returning the version of the used Obfs4proxy.
+- Use latest Android NDK v24.0 which raises the minimally supported Android API level to 19.
+- Added support for MacOS.
+
 ## 1.5.1
 - Update Snowflake to latest main. Contains a crash fix.
 - Added `IsSnowflakeProxyRunning` method to easily check,
diff --git a/IPtProxy-sources.jar b/IPtProxy-sources.jar
index 71bd85eff20f0e009c11cb8c2b9217ebd6447382..85690fb146ba72a637164e7b603d9d2b428f166f 100644
Binary files a/IPtProxy-sources.jar and b/IPtProxy-sources.jar differ
diff --git a/IPtProxy.aar b/IPtProxy.aar
index 759c224dfce678b50f63aac22489c99241840676..488ba2773909c957ebe0af9339258b68c1a990b8 100644
Binary files a/IPtProxy.aar and b/IPtProxy.aar differ
diff --git a/IPtProxy.podspec b/IPtProxy.podspec
index bbae02ae57b12421556da38cc9db5b4236d6a650..edb8d30ae94d1a038077db870eb285a6b7dccfd7 100644
--- a/IPtProxy.podspec
+++ b/IPtProxy.podspec
@@ -8,8 +8,8 @@
 
 Pod::Spec.new do |s|
   s.name             = 'IPtProxy'
-  s.version          = '1.5.1'
-  s.summary          = 'Obfs4proxy and Snowflake Pluggable Transports for iOS'
+  s.version          = '1.6.0'
+  s.summary          = 'Obfs4proxy and Snowflake Pluggable Transports for iOS and macOS'
 
   s.description      = <<-DESC
     Both Obfs4proxy and Snowflake Pluggable Transports are written in Go, which
@@ -33,7 +33,13 @@ Pod::Spec.new do |s|
     - Snowflake and Obfs4proxy are patched to accept all configuration parameters
       directly.
 
-    Both PTs are contained at their latest `master` commit, as per 2021-07-14.
+    Contained transport versions:
+
+    | Transport  | Version |
+    |------------|--------:|
+    | Obfs4proxy |  0.0.13 |
+    | Snowflake  |   2.2.0 |
+
                        DESC
 
   s.homepage         = 'https://github.com/tladesignz/IPtProxy'
@@ -43,6 +49,7 @@ Pod::Spec.new do |s|
   s.social_media_url = 'https://twitter.com/tladesignz'
 
   s.ios.deployment_target = '11.0'
+  s.osx.deployment_target = '12'
 
   s.preserve_paths = 'build.sh', '*.patch', 'IPtProxy.go/*'
 
diff --git a/IPtProxy.xcframework/Info.plist b/IPtProxy.xcframework/Info.plist
index f559237aeef2bdc7a474047e0ad5306f91ae084e..cf9cf515fc90351a33402fed4678715adf44d61c 100644
--- a/IPtProxy.xcframework/Info.plist
+++ b/IPtProxy.xcframework/Info.plist
@@ -31,6 +31,19 @@
 			<key>SupportedPlatformVariant</key>
 			<string>simulator</string>
 		</dict>
+		<dict>
+			<key>LibraryIdentifier</key>
+			<string>macos-arm64_x86_64</string>
+			<key>LibraryPath</key>
+			<string>IPtProxy.framework</string>
+			<key>SupportedArchitectures</key>
+			<array>
+				<string>arm64</string>
+				<string>x86_64</string>
+			</array>
+			<key>SupportedPlatform</key>
+			<string>macos</string>
+		</dict>
 	</array>
 	<key>CFBundlePackageType</key>
 	<string>XFWK</string>
diff --git a/IPtProxy.xcframework/ios-arm64/IPtProxy.framework/Versions/A/Headers/IPtProxy.objc.h b/IPtProxy.xcframework/ios-arm64/IPtProxy.framework/Versions/A/Headers/IPtProxy.objc.h
index 959ed50e93b3abb73083dad2fe90c4a8d59b07ee..59dce2e73b6a9475fd19ade66978048c8ebf964b 100644
--- a/IPtProxy.xcframework/ios-arm64/IPtProxy.framework/Versions/A/Headers/IPtProxy.objc.h
+++ b/IPtProxy.xcframework/ios-arm64/IPtProxy.framework/Versions/A/Headers/IPtProxy.objc.h
@@ -15,6 +15,9 @@
 @class IPtProxySnowflakeClientConnected;
 
 @protocol IPtProxySnowflakeClientConnected <NSObject>
+/**
+ * Connected - callback method to handle snowflake proxy client connections.
+ */
 - (void)connected;
 @end
 
@@ -63,6 +66,11 @@ Only use this property after calling StartObfs4Proxy! It might have changed afte
  */
 FOUNDATION_EXPORT long IPtProxyObfs4Port(void);
 
+/**
+ * Obfs4ProxyVersion - The version of Obfs4Proxy bundled with IPtProxy.
+ */
+FOUNDATION_EXPORT NSString* _Nonnull IPtProxyObfs4ProxyVersion(void);
+
 /**
  * ScramblesuitPort - Port where Obfs4proxy will provide its Scramblesuit service.
 Only use this property after calling StartObfs4Proxy! It might have changed after that!
diff --git a/IPtProxy.xcframework/ios-arm64/IPtProxy.framework/Versions/A/IPtProxy b/IPtProxy.xcframework/ios-arm64/IPtProxy.framework/Versions/A/IPtProxy
index e0101330731a16f12e2d97b50e0e5f824e7d2d19..84b7120d41d6102a0c15b88b32ca6f3f167bf322 100644
Binary files a/IPtProxy.xcframework/ios-arm64/IPtProxy.framework/Versions/A/IPtProxy and b/IPtProxy.xcframework/ios-arm64/IPtProxy.framework/Versions/A/IPtProxy differ
diff --git a/IPtProxy.xcframework/ios-arm64_x86_64-simulator/IPtProxy.framework/Versions/A/Headers/IPtProxy.objc.h b/IPtProxy.xcframework/ios-arm64_x86_64-simulator/IPtProxy.framework/Versions/A/Headers/IPtProxy.objc.h
index 959ed50e93b3abb73083dad2fe90c4a8d59b07ee..59dce2e73b6a9475fd19ade66978048c8ebf964b 100644
--- a/IPtProxy.xcframework/ios-arm64_x86_64-simulator/IPtProxy.framework/Versions/A/Headers/IPtProxy.objc.h
+++ b/IPtProxy.xcframework/ios-arm64_x86_64-simulator/IPtProxy.framework/Versions/A/Headers/IPtProxy.objc.h
@@ -15,6 +15,9 @@
 @class IPtProxySnowflakeClientConnected;
 
 @protocol IPtProxySnowflakeClientConnected <NSObject>
+/**
+ * Connected - callback method to handle snowflake proxy client connections.
+ */
 - (void)connected;
 @end
 
@@ -63,6 +66,11 @@ Only use this property after calling StartObfs4Proxy! It might have changed afte
  */
 FOUNDATION_EXPORT long IPtProxyObfs4Port(void);
 
+/**
+ * Obfs4ProxyVersion - The version of Obfs4Proxy bundled with IPtProxy.
+ */
+FOUNDATION_EXPORT NSString* _Nonnull IPtProxyObfs4ProxyVersion(void);
+
 /**
  * ScramblesuitPort - Port where Obfs4proxy will provide its Scramblesuit service.
 Only use this property after calling StartObfs4Proxy! It might have changed after that!
diff --git a/IPtProxy.xcframework/ios-arm64_x86_64-simulator/IPtProxy.framework/Versions/A/IPtProxy b/IPtProxy.xcframework/ios-arm64_x86_64-simulator/IPtProxy.framework/Versions/A/IPtProxy
index ed0d2645fd9d837ec5beb462515f5f2feed2ba6d..155c371949e68bd936473e83f816e4a11ad021d3 100644
Binary files a/IPtProxy.xcframework/ios-arm64_x86_64-simulator/IPtProxy.framework/Versions/A/IPtProxy and b/IPtProxy.xcframework/ios-arm64_x86_64-simulator/IPtProxy.framework/Versions/A/IPtProxy differ
diff --git a/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Headers b/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Headers
new file mode 120000
index 0000000000000000000000000000000000000000..a177d2a6b92600696030834c319f5e1434f9ee6a
--- /dev/null
+++ b/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Headers
@@ -0,0 +1 @@
+Versions/Current/Headers
\ No newline at end of file
diff --git a/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/IPtProxy b/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/IPtProxy
new file mode 120000
index 0000000000000000000000000000000000000000..540a5c6fb381d72c2b75e268b357bd66c2934451
--- /dev/null
+++ b/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/IPtProxy
@@ -0,0 +1 @@
+Versions/Current/IPtProxy
\ No newline at end of file
diff --git a/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Modules b/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Modules
new file mode 120000
index 0000000000000000000000000000000000000000..5736f3186e797b8b787748c9979d0fed3b0536c3
--- /dev/null
+++ b/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Modules
@@ -0,0 +1 @@
+Versions/Current/Modules
\ No newline at end of file
diff --git a/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Resources b/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Resources
new file mode 120000
index 0000000000000000000000000000000000000000..953ee36f3bb709faf58a351e0b33c353e337c0a2
--- /dev/null
+++ b/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Resources
@@ -0,0 +1 @@
+Versions/Current/Resources
\ No newline at end of file
diff --git a/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Versions/A/Headers/IPtProxy.h b/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Versions/A/Headers/IPtProxy.h
new file mode 100644
index 0000000000000000000000000000000000000000..c9b6f40fc052c4aa1834ff0df9360980531d3577
--- /dev/null
+++ b/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Versions/A/Headers/IPtProxy.h
@@ -0,0 +1,13 @@
+
+// Objective-C API for talking to the following Go packages
+//
+//	github.com/tladesignz/IPtProxy.git
+//
+// File is generated by gomobile bind. Do not edit.
+#ifndef __IPtProxy_FRAMEWORK_H__
+#define __IPtProxy_FRAMEWORK_H__
+
+#include "IPtProxy.objc.h"
+#include "Universe.objc.h"
+
+#endif
diff --git a/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Versions/A/Headers/IPtProxy.objc.h b/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Versions/A/Headers/IPtProxy.objc.h
new file mode 100644
index 0000000000000000000000000000000000000000..59dce2e73b6a9475fd19ade66978048c8ebf964b
--- /dev/null
+++ b/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Versions/A/Headers/IPtProxy.objc.h
@@ -0,0 +1,188 @@
+// Objective-C API for talking to github.com/tladesignz/IPtProxy.git Go package.
+//   gobind -lang=objc github.com/tladesignz/IPtProxy.git
+//
+// File is generated by gobind. Do not edit.
+
+#ifndef __IPtProxy_H__
+#define __IPtProxy_H__
+
+@import Foundation;
+#include "ref.h"
+#include "Universe.objc.h"
+
+
+@protocol IPtProxySnowflakeClientConnected;
+@class IPtProxySnowflakeClientConnected;
+
+@protocol IPtProxySnowflakeClientConnected <NSObject>
+/**
+ * Connected - callback method to handle snowflake proxy client connections.
+ */
+- (void)connected;
+@end
+
+@interface IPtProxy : NSObject
+/**
+ * StateLocation - Override TOR_PT_STATE_LOCATION, which defaults to "$TMPDIR/pt_state".
+ */
++ (NSString* _Nonnull) stateLocation;
++ (void) setStateLocation:(NSString* _Nonnull)v;
+
+@end
+
+/**
+ * IsPortAvailable - Checks to see if a given port is not in use.
+
+@param port The port to check.
+ */
+FOUNDATION_EXPORT BOOL IPtProxyIsPortAvailable(long port);
+
+/**
+ * IsSnowflakeProxyRunning - Checks to see if a snowflake proxy is running in your app.
+ */
+FOUNDATION_EXPORT BOOL IPtProxyIsSnowflakeProxyRunning(void);
+
+/**
+ * MeekPort - Port where Obfs4proxy will provide its Meek service.
+Only use this after calling StartObfs4Proxy! It might have changed after that!
+ */
+FOUNDATION_EXPORT long IPtProxyMeekPort(void);
+
+/**
+ * Obfs2Port - Port where Obfs4proxy will provide its Obfs2 service.
+Only use this property after calling StartObfs4Proxy! It might have changed after that!
+ */
+FOUNDATION_EXPORT long IPtProxyObfs2Port(void);
+
+/**
+ * Obfs3Port - Port where Obfs4proxy will provide its Obfs3 service.
+Only use this property after calling StartObfs4Proxy! It might have changed after that!
+ */
+FOUNDATION_EXPORT long IPtProxyObfs3Port(void);
+
+/**
+ * Obfs4Port - Port where Obfs4proxy will provide its Obfs4 service.
+Only use this property after calling StartObfs4Proxy! It might have changed after that!
+ */
+FOUNDATION_EXPORT long IPtProxyObfs4Port(void);
+
+/**
+ * Obfs4ProxyVersion - The version of Obfs4Proxy bundled with IPtProxy.
+ */
+FOUNDATION_EXPORT NSString* _Nonnull IPtProxyObfs4ProxyVersion(void);
+
+/**
+ * ScramblesuitPort - Port where Obfs4proxy will provide its Scramblesuit service.
+Only use this property after calling StartObfs4Proxy! It might have changed after that!
+ */
+FOUNDATION_EXPORT long IPtProxyScramblesuitPort(void);
+
+/**
+ * SnowflakePort - Port where Snowflake will provide its service.
+Only use this property after calling StartSnowflake! It might have changed after that!
+ */
+FOUNDATION_EXPORT long IPtProxySnowflakePort(void);
+
+/**
+ * StartObfs4Proxy - Start the Obfs4Proxy.
+
+This will test, if the default ports are available. If not, it will increment them until there is.
+Only use the port properties after calling this, they might have been changed!
+
+@param logLevel Log level (ERROR/WARN/INFO/DEBUG). Defaults to ERROR if empty string.
+
+@param enableLogging Log to TOR_PT_STATE_LOCATION/obfs4proxy.log.
+
+@param unsafeLogging Disable the address scrubber.
+
+@param proxy HTTP, SOCKS4 or SOCKS5 proxy to be used behind Obfs4proxy. E.g. "socks5://127.0.0.1:12345"
+
+@return Port number where Obfs4Proxy will listen on for Obfs4(!), if no error happens during start up.
+	If you need the other ports, check MeekPort, Obfs2Port, Obfs3Port and ScramblesuitPort properties!
+ */
+FOUNDATION_EXPORT long IPtProxyStartObfs4Proxy(NSString* _Nullable logLevel, BOOL enableLogging, BOOL unsafeLogging, NSString* _Nullable proxy);
+
+/**
+ * StartSnowflake - Start the Snowflake client.
+
+@param ice Comma-separated list of ICE servers.
+
+@param url URL of signaling broker.
+
+@param front Front domain.
+
+@param ampCache OPTIONAL. URL of AMP cache to use as a proxy for signaling.
+       Only needed when you want to do the rendezvous over AMP instead of a domain fronted server.
+
+@param logFile Name of log file. OPTIONAL. Defaults to no log.
+
+@param logToStateDir Resolve the log file relative to Tor's PT state dir.
+
+@param keepLocalAddresses Keep local LAN address ICE candidates.
+
+@param unsafeLogging Prevent logs from being scrubbed.
+
+@param maxPeers Capacity for number of multiplexed WebRTC peers. DEFAULTs to 1 if less than that.
+
+@return Port number where Snowflake will listen on, if no error happens during start up.
+ */
+FOUNDATION_EXPORT long IPtProxyStartSnowflake(NSString* _Nullable ice, NSString* _Nullable url, NSString* _Nullable front, NSString* _Nullable ampCache, NSString* _Nullable logFile, BOOL logToStateDir, BOOL keepLocalAddresses, BOOL unsafeLogging, long maxPeers);
+
+/**
+ * StartSnowflakeProxy - Start the Snowflake proxy.
+
+@param capacity Maximum concurrent clients. OPTIONAL. Defaults to 10, if 0.
+
+@param broker Broker URL. OPTIONAL. Defaults to https://snowflake-broker.torproject.net/, if empty.
+
+@param relay WebSocket relay URL. OPTIONAL. Defaults to wss://snowflake.bamsoftware.com/, if empty.
+
+@param stun STUN URL. OPTIONAL. Defaults to stun:stun.stunprotocol.org:3478, if empty.
+
+@param natProbe OPTIONAL. Defaults to https://snowflake-broker.torproject.net:8443/probe, if empty.
+
+@param logFile Name of log file. OPTIONAL. Defaults to STDERR.
+
+@param keepLocalAddresses Keep local LAN address ICE candidates.
+
+@param unsafeLogging Prevent logs from being scrubbed.
+
+@param clientConnected A delegate which is called when a client successfully connected.
+      Will be called on its own thread! You will need to switch to your own UI thread,
+      if you want to do UI stuff!! OPTIONAL
+ */
+FOUNDATION_EXPORT void IPtProxyStartSnowflakeProxy(long capacity, NSString* _Nullable broker, NSString* _Nullable relay, NSString* _Nullable stun, NSString* _Nullable natProbe, NSString* _Nullable logFile, BOOL keepLocalAddresses, BOOL unsafeLogging, id<IPtProxySnowflakeClientConnected> _Nullable clientConnected);
+
+/**
+ * StopObfs4Proxy - Stop the Obfs4Proxy.
+ */
+FOUNDATION_EXPORT void IPtProxyStopObfs4Proxy(void);
+
+/**
+ * StopSnowflake - Stop the Snowflake client.
+ */
+FOUNDATION_EXPORT void IPtProxyStopSnowflake(void);
+
+/**
+ * StopSnowflakeProxy - Stop the Snowflake proxy.
+ */
+FOUNDATION_EXPORT void IPtProxyStopSnowflakeProxy(void);
+
+@class IPtProxySnowflakeClientConnected;
+
+/**
+ * SnowflakeClientConnected - Interface to use when clients connect
+to the snowflake proxy. For use with StartSnowflakeProxy
+ */
+@interface IPtProxySnowflakeClientConnected : NSObject <goSeqRefInterface, IPtProxySnowflakeClientConnected> {
+}
+@property(strong, readonly) _Nonnull id _ref;
+
+- (nonnull instancetype)initWithRef:(_Nonnull id)ref;
+/**
+ * Connected - callback method to handle snowflake proxy client connections.
+ */
+- (void)connected;
+@end
+
+#endif
diff --git a/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Versions/A/Headers/Universe.objc.h b/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Versions/A/Headers/Universe.objc.h
new file mode 100644
index 0000000000000000000000000000000000000000..019e7502d581983722a15bf30799e85cbc5dd766
--- /dev/null
+++ b/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Versions/A/Headers/Universe.objc.h
@@ -0,0 +1,29 @@
+// Objective-C API for talking to  Go package.
+//   gobind -lang=objc 
+//
+// File is generated by gobind. Do not edit.
+
+#ifndef __Universe_H__
+#define __Universe_H__
+
+@import Foundation;
+#include "ref.h"
+
+@protocol Universeerror;
+@class Universeerror;
+
+@protocol Universeerror <NSObject>
+- (NSString* _Nonnull)error;
+@end
+
+@class Universeerror;
+
+@interface Universeerror : NSError <goSeqRefInterface, Universeerror> {
+}
+@property(strong, readonly) _Nonnull id _ref;
+
+- (nonnull instancetype)initWithRef:(_Nonnull id)ref;
+- (NSString* _Nonnull)error;
+@end
+
+#endif
diff --git a/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Versions/A/Headers/ref.h b/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Versions/A/Headers/ref.h
new file mode 100644
index 0000000000000000000000000000000000000000..b8036a4d85c7387f3def61473a071b5d8c4c8208
--- /dev/null
+++ b/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Versions/A/Headers/ref.h
@@ -0,0 +1,35 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+#ifndef __GO_REF_HDR__
+#define __GO_REF_HDR__
+
+#include <Foundation/Foundation.h>
+
+// GoSeqRef is an object tagged with an integer for passing back and
+// forth across the language boundary. A GoSeqRef may represent either
+// an instance of a Go object, or an Objective-C object passed to Go.
+// The explicit allocation of a GoSeqRef is used to pin a Go object
+// when it is passed to Objective-C. The Go seq package maintains a
+// reference to the Go object in a map keyed by the refnum along with
+// a reference count. When the reference count reaches zero, the Go
+// seq package will clear the corresponding entry in the map.
+@interface GoSeqRef : NSObject {
+}
+@property(readonly) int32_t refnum;
+@property(strong) id obj; // NULL when representing a Go object.
+
+// new GoSeqRef object to proxy a Go object. The refnum must be
+// provided from Go side.
+- (instancetype)initWithRefnum:(int32_t)refnum obj:(id)obj;
+
+- (int32_t)incNum;
+
+@end
+
+@protocol goSeqRefInterface
+-(GoSeqRef*) _ref;
+@end
+
+#endif
diff --git a/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Versions/A/IPtProxy b/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Versions/A/IPtProxy
new file mode 100644
index 0000000000000000000000000000000000000000..6a755c68aba3fa78a5a65ae1acf22242bac63e53
Binary files /dev/null and b/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Versions/A/IPtProxy differ
diff --git a/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Versions/A/Modules/module.modulemap b/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Versions/A/Modules/module.modulemap
new file mode 100644
index 0000000000000000000000000000000000000000..7e2b8915090b67d2c5aaa06c69296102e92277ac
--- /dev/null
+++ b/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Versions/A/Modules/module.modulemap
@@ -0,0 +1,8 @@
+framework module "IPtProxy" {
+	header "ref.h"
+    header "IPtProxy.objc.h"
+    header "Universe.objc.h"
+    header "IPtProxy.h"
+
+    export *
+}
\ No newline at end of file
diff --git a/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Versions/A/Resources/Info.plist b/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Versions/A/Resources/Info.plist
new file mode 100644
index 0000000000000000000000000000000000000000..0d1a4b8ab9b1fc8e9357197398f73353470cb636
--- /dev/null
+++ b/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Versions/A/Resources/Info.plist
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+    <plist version="1.0">
+      <dict>
+      </dict>
+    </plist>
diff --git a/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Versions/Current b/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Versions/Current
new file mode 120000
index 0000000000000000000000000000000000000000..8c7e5a667f1b771847fe88c01c3de34413a1b220
--- /dev/null
+++ b/IPtProxy.xcframework/macos-arm64_x86_64/IPtProxy.framework/Versions/Current
@@ -0,0 +1 @@
+A
\ No newline at end of file
diff --git a/README.md b/README.md
index ed4afe16743e15494b1b775e0a375bfa1314f65c..76e14afebe1f0adfc28b927ea9ec1952200c3067 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
 # IPtProxy
 
-Obfs4proxy and Snowflake Pluggable Transports for iOS and Android
+Obfs4proxy and Snowflake Pluggable Transports for iOS, MacOS and Android
 
 [![JitPack](https://jitpack.io/v/tladesignz/IPtProxy.svg)](https://jitpack.io/#tladesignz/IPtProxy)
 [![Version](https://img.shields.io/cocoapods/v/IPtProxy.svg?style=flat)](https://cocoapods.org/pods/IPtProxy)
@@ -10,7 +10,7 @@ Obfs4proxy and Snowflake Pluggable Transports for iOS and Android
 | Transport  | Version |
 |------------|--------:|
 | Obfs4proxy |  0.0.13 |
-| Snowflake  |   2.1.0 |
+| Snowflake  |   2.2.0 |
 
 Both Obfs4proxy and Snowflake Pluggable Transports are written in Go, which
 is a little annoying to use on iOS and Android.
@@ -36,7 +36,7 @@ Problems solved in particular are:
   on a multi-user Android), you should first start the transports and then use the 
   returned ports for configuration of other components (e.g. Tor). 
 
-## iOS
+## iOS/macOS
 
 ### Installation
 
@@ -44,7 +44,7 @@ IPtProxy is available through [CocoaPods](https://cocoapods.org). To install
 it, simply add the following line to your `Podfile`:
 
 ```ruby
-pod 'IPtProxy', '~> 1.5'
+pod 'IPtProxy', '~> 1.6'
 ```
 
 ### Getting Started
@@ -62,7 +62,7 @@ IPtProxy is available through [JitPack](https://jitpack.io). To install
 it, simply add the following line to your `build.gradle` file:
 
 ```groovy
-implementation 'com.github.tladesignz:IPtProxy:1.5.1'
+implementation 'com.github.tladesignz:IPtProxy:1.6.0'
 ```
 
 And this to your root `build.gradle` at the end of repositories:
@@ -196,4 +196,4 @@ for the Guardian Project https://guardianproject.info
 
 ## License
 
-IPtProxy is available under the MIT license. See the LICENSE file for more info.
+IPtProxy is available under the MIT license. See the [LICENSE](LICENSE) file for more info.
diff --git a/jitpack.yml b/jitpack.yml
index 8bcc99b108b118e4d2a88e4ea60a91e6d57176fb..ea7f1ae2174e3f5b80a38aa22905b9e9ba170f85 100644
--- a/jitpack.yml
+++ b/jitpack.yml
@@ -1,3 +1,3 @@
 install:
   - FILE="-Dfile=IPtProxy.aar"
-  - mvn install:install-file $FILE -DgroupId=com.github.tladesignz -DartifactId=IPtProxy -Dversion=1.5.1 -Dpackaging=aar -DgeneratePom=true -Dsources=IPtProxy-sources.jar
+  - mvn install:install-file $FILE -DgroupId=com.github.tladesignz -DartifactId=IPtProxy -Dversion=1.6.0 -Dpackaging=aar -DgeneratePom=true -Dsources=IPtProxy-sources.jar
diff --git a/pom.xml b/pom.xml
index 40acb93998b2348c7edd0da1fc9456f9eadb5c2e..71f81c4a7839e3cbb8b42c29f5546b19588b4368 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,5 +5,5 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.github.tladesignz</groupId>
   <artifactId>IPtProxy</artifactId>
-  <version>1.5.1</version>
+  <version>1.6.0</version>
 </project>