diff --git a/contracts/arbitrum/connectors/uniswap-sell-beta/helpers.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/helpers.sol
new file mode 100644
index 00000000..e7027aca
--- /dev/null
+++ b/contracts/arbitrum/connectors/uniswap-sell-beta/helpers.sol
@@ -0,0 +1,67 @@
+pragma solidity ^0.7.6;
+pragma abicoder v2;
+
+import "./interface.sol";
+import {SqrtPriceMath} from "./libraries/SqrtPriceMath.sol";
+import "./libraries/TransferHelper.sol";
+
+abstract contract Helpers is ISwapRouter {
+    ISwapRouter router =
+        ISwapRouter(0xE592427A0AEce92De3Edee1F18E0157C05861564);
+
+    UniswapV3Pool state =
+        UniswapV3Pool(0xCEda10b4d3bdE429DdA3A6daB87b38360313CBdB);
+
+    function getPriceLimit(uint256 amountIn, bool zeroForOne)
+        public
+        returns (uint160)
+    {
+        return (
+            SqrtPriceMath.getNextSqrtPriceFromInput(
+                state.slot0().sqrtPriceX96,
+                state.liquidity(),
+                amountIn,
+                zeroForOne
+            )
+        );
+    }
+
+    function getParams(
+        address tokenIn,
+        address tokenOut,
+        address recipient,
+        uint24 fee,
+        uint256 amountIn,
+        uint256 amountOutMinimum,
+        bool zeroForOne
+    ) public returns (ISwapRouter.ExactInputSingleParams memory params) {
+        params = ISwapRouter.ExactInputSingleParams({
+            tokenIn: tokenIn,
+            tokenOut: tokenOut,
+            fee: fee,
+            recipient: recipient,
+            deadline: block.timestamp + 1,
+            amountIn: amountIn,
+            amountOutMinimum: amountOutMinimum,
+            sqrtPriceLimitX96: getPriceLimit(amountIn, zeroForOne)
+        });
+    }
+
+    function approveTransfer(
+        address tokenIn,
+        address sender,
+        address recipient,
+        uint256 amountIn
+    ) public {
+        TransferHelper.safeTransferFrom(tokenIn, sender, recipient, amountIn);
+
+        TransferHelper.safeApprove(tokenIn, address(router), amountIn);
+    }
+
+    function getSingleInput(ISwapRouter.ExactInputSingleParams memory params)
+        public
+        returns (uint256)
+    {
+        return (uint256(router.exactInputSingle(params)));
+    }
+}
diff --git a/contracts/sample/interface.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/interface.sol
similarity index 100%
rename from contracts/sample/interface.sol
rename to contracts/arbitrum/connectors/uniswap-sell-beta/interface.sol
diff --git a/contracts/sample/libraries/BitMath.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/BitMath.sol
similarity index 100%
rename from contracts/sample/libraries/BitMath.sol
rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/BitMath.sol
diff --git a/contracts/sample/libraries/FixedPoint128.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/FixedPoint128.sol
similarity index 100%
rename from contracts/sample/libraries/FixedPoint128.sol
rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/FixedPoint128.sol
diff --git a/contracts/sample/libraries/FixedPoint96.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/FixedPoint96.sol
similarity index 100%
rename from contracts/sample/libraries/FixedPoint96.sol
rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/FixedPoint96.sol
diff --git a/contracts/sample/libraries/FullMath.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/FullMath.sol
similarity index 100%
rename from contracts/sample/libraries/FullMath.sol
rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/FullMath.sol
diff --git a/contracts/sample/libraries/IERC20Minimal.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/IERC20Minimal.sol
similarity index 100%
rename from contracts/sample/libraries/IERC20Minimal.sol
rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/IERC20Minimal.sol
diff --git a/contracts/sample/libraries/LICENSE_GPL b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/LICENSE_GPL
similarity index 100%
rename from contracts/sample/libraries/LICENSE_GPL
rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/LICENSE_GPL
diff --git a/contracts/sample/libraries/LICENSE_MIT b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/LICENSE_MIT
similarity index 100%
rename from contracts/sample/libraries/LICENSE_MIT
rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/LICENSE_MIT
diff --git a/contracts/sample/libraries/LiquidityMath.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/LiquidityMath.sol
similarity index 100%
rename from contracts/sample/libraries/LiquidityMath.sol
rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/LiquidityMath.sol
diff --git a/contracts/sample/libraries/LowGasSafeMath.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/LowGasSafeMath.sol
similarity index 100%
rename from contracts/sample/libraries/LowGasSafeMath.sol
rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/LowGasSafeMath.sol
diff --git a/contracts/sample/libraries/Oracle.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/Oracle.sol
similarity index 100%
rename from contracts/sample/libraries/Oracle.sol
rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/Oracle.sol
diff --git a/contracts/sample/libraries/Position.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/Position.sol
similarity index 100%
rename from contracts/sample/libraries/Position.sol
rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/Position.sol
diff --git a/contracts/sample/libraries/SafeCast.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/SafeCast.sol
similarity index 100%
rename from contracts/sample/libraries/SafeCast.sol
rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/SafeCast.sol
diff --git a/contracts/sample/libraries/SqrtPriceMath.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/SqrtPriceMath.sol
similarity index 100%
rename from contracts/sample/libraries/SqrtPriceMath.sol
rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/SqrtPriceMath.sol
diff --git a/contracts/sample/libraries/SwapMath.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/SwapMath.sol
similarity index 100%
rename from contracts/sample/libraries/SwapMath.sol
rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/SwapMath.sol
diff --git a/contracts/sample/libraries/Tick.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/Tick.sol
similarity index 100%
rename from contracts/sample/libraries/Tick.sol
rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/Tick.sol
diff --git a/contracts/sample/libraries/TickBitmap.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/TickBitmap.sol
similarity index 100%
rename from contracts/sample/libraries/TickBitmap.sol
rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/TickBitmap.sol
diff --git a/contracts/sample/libraries/TickMath.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/TickMath.sol
similarity index 100%
rename from contracts/sample/libraries/TickMath.sol
rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/TickMath.sol
diff --git a/contracts/sample/libraries/TransferHelper.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/TransferHelper.sol
similarity index 100%
rename from contracts/sample/libraries/TransferHelper.sol
rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/TransferHelper.sol
diff --git a/contracts/sample/libraries/UnsafeMath.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/UnsafeMath.sol
similarity index 100%
rename from contracts/sample/libraries/UnsafeMath.sol
rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/UnsafeMath.sol
diff --git a/contracts/arbitrum/connectors/uniswap-sell-beta/main.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/main.sol
new file mode 100644
index 00000000..e564ec2c
--- /dev/null
+++ b/contracts/arbitrum/connectors/uniswap-sell-beta/main.sol
@@ -0,0 +1,32 @@
+pragma solidity ^0.7.6;
+pragma abicoder v2;
+
+import "./helpers.sol";
+
+abstract contract uniswapSellBeta is Helpers {
+    function sell(
+        address tokenIn,
+        address tokenOut,
+        uint24 fee,
+        uint256 amountIn,
+        uint256 amountOutMinimum,
+        bool zeroForOne
+    ) public returns (uint256 amountOut) {
+        approveTransfer(tokenIn, msg.sender, address(this), amountIn);
+        amountOut = getSingleInput(
+            getParams(
+                tokenIn,
+                tokenOut,
+                msg.sender,
+                fee,
+                amountIn,
+                amountOutMinimum,
+                zeroForOne
+            )
+        );
+    }
+}
+
+abstract contract UniswapSellBetaArbitrum is uniswapSellBeta {
+    string public constant name = "UniswapSample-v1";
+}
diff --git a/contracts/sample/helpers.sol b/contracts/sample/helpers.sol
deleted file mode 100644
index c199f22a..00000000
--- a/contracts/sample/helpers.sol
+++ /dev/null
@@ -1,56 +0,0 @@
-pragma solidity ^0.7.6;
-pragma abicoder v2;
-
-import "./interface.sol";
-import {SqrtPriceMath} from "./libraries/SqrtPriceMath.sol";
-import "./libraries/TransferHelper.sol";
-
-abstract contract Helpers is ISwapRouter {
-    ISwapRouter router =
-        ISwapRouter(0xE592427A0AEce92De3Edee1F18E0157C05861564);
-
-    UniswapV3Pool state =
-        UniswapV3Pool(0xCEda10b4d3bdE429DdA3A6daB87b38360313CBdB);
-
-    uint24 public constant poolFee = 3000;
-
-    function getPriceLimit(
-        ISwapRouter.ExactInputSingleParams memory params,
-        bool zeroForOne
-    ) public returns (uint160) {
-        return (
-            SqrtPriceMath.getNextSqrtPriceFromInput(
-                state.slot0().sqrtPriceX96,
-                state.liquidity(),
-                params.amountIn,
-                zeroForOne
-            )
-        );
-    }
-
-    function approveTransfer(
-        ISwapRouter.ExactInputSingleParams memory params,
-        address sender,
-        address recipient
-    ) public {
-        TransferHelper.safeTransferFrom(
-            params.tokenIn,
-            sender,
-            recipient,
-            params.amountIn
-        );
-
-        TransferHelper.safeApprove(
-            params.tokenIn,
-            address(router),
-            params.amountIn
-        );
-    }
-
-    function getSingleInput(ISwapRouter.ExactInputSingleParams memory params)
-        public
-        returns (uint256)
-    {
-        return (uint256(router.exactInputSingle(params)));
-    }
-}
diff --git a/contracts/sample/main.sol b/contracts/sample/main.sol
deleted file mode 100644
index 3c5b6fee..00000000
--- a/contracts/sample/main.sol
+++ /dev/null
@@ -1,32 +0,0 @@
-pragma solidity ^0.7.6;
-pragma abicoder v2;
-
-import "./helpers.sol";
-import "./interface.sol";
-
-abstract contract uniswapSample is Helpers {
-    function sell(
-        ISwapRouter.ExactInputSingleParams memory params,
-        bool zeroForOne
-    ) public returns (uint256 amountOut) {
-        approveTransfer(params, msg.sender, address(this));
-
-        ISwapRouter.ExactInputSingleParams memory params1 = ISwapRouter
-            .ExactInputSingleParams({
-                tokenIn: params.tokenIn,
-                tokenOut: params.tokenOut,
-                fee: poolFee,
-                recipient: address(this),
-                deadline: block.timestamp + 1,
-                amountIn: params.amountIn,
-                amountOutMinimum: 0,
-                sqrtPriceLimitX96: getPriceLimit(params, true)
-            });
-
-        amountOut = getSingleInput(params1);
-    }
-}
-
-abstract contract UniswapArbitrum is uniswapSample {
-    string public constant name = "UniswapSample-v1";
-}