diff --git a/contracts/mainnet/connectors/INST/events.sol b/contracts/mainnet/connectors/INST/events.sol
new file mode 100644
index 00000000..042c635a
--- /dev/null
+++ b/contracts/mainnet/connectors/INST/events.sol
@@ -0,0 +1,6 @@
+pragma solidity ^0.7.0;
+
+contract Events {
+    event LogVoteCast(uint256 proposalId, uint256 support, string reason);
+    event LogDelegate(address delegatee);
+}
diff --git a/contracts/mainnet/connectors/INST/helpers.sol b/contracts/mainnet/connectors/INST/helpers.sol
new file mode 100644
index 00000000..7bdab7a1
--- /dev/null
+++ b/contracts/mainnet/connectors/INST/helpers.sol
@@ -0,0 +1,18 @@
+pragma solidity ^0.7.0;
+pragma experimental ABIEncoderV2;
+
+import { DSMath } from "../../common/math.sol";
+import { Basic } from "../../common/basic.sol";
+import { InstaTokenInterface, InstaGovernorInterface } from "./interface.sol";
+
+abstract contract Helpers is DSMath, Basic {
+    /**
+     * @dev InstaGovernorBravo
+     */
+    InstaGovernorInterface internal constant instaGovernor = InstaGovernorInterface(0x3d9819210A31b4961b30EF54bE2aeD79B9c9Cd3B);
+
+    /**
+     * @dev INST Token
+     */
+    InstaTokenInterface internal constant instToken = InstaTokenInterface(0xc00e94Cb662C3520282E6f5717214004A7f26888);
+}
\ No newline at end of file
diff --git a/contracts/mainnet/connectors/INST/interface.sol b/contracts/mainnet/connectors/INST/interface.sol
new file mode 100644
index 00000000..eacb53ae
--- /dev/null
+++ b/contracts/mainnet/connectors/INST/interface.sol
@@ -0,0 +1,10 @@
+pragma solidity ^0.7.0;
+
+interface InstaGovernorInterface {
+    function castVoteWithReason(uint proposalId, uint8 support, string calldata reason) external;
+}
+
+interface InstaTokenInterface {
+    function delegate(address delegatee) external;
+    function delegates(address) external view returns(address);
+}
\ No newline at end of file
diff --git a/contracts/mainnet/connectors/INST/main.sol b/contracts/mainnet/connectors/INST/main.sol
new file mode 100644
index 00000000..05329dee
--- /dev/null
+++ b/contracts/mainnet/connectors/INST/main.sol
@@ -0,0 +1,60 @@
+pragma solidity ^0.7.0;
+pragma experimental ABIEncoderV2;
+
+/**
+ * @title Instadapp Governance.
+ * @dev Governance.
+ */
+import { TokenInterface } from "../../common/interfaces.sol";
+import { Stores } from "../../common/stores.sol";
+import { Helpers } from "./helpers.sol";
+import { Events } from "./events.sol";
+
+abstract contract Resolver is Events, Helpers {
+
+    /**
+     * @dev Delegate votes.
+     * @notice Delegating votes to delegatee.
+     * @param delegatee The address to delegate the votes.
+    */
+    function delegate(address delegatee) external payable returns (string memory _eventName, bytes memory _eventParam) {
+        require(instToken.delegates(address(this)) != delegatee, "Already delegated to same delegatee.");
+
+        instToken.delegate(delegatee);
+
+        _eventName = "LogDelegate(address)";
+        _eventParam = abi.encode(delegatee);
+    }
+
+
+    /**
+     * @dev Cast vote.
+      * @notice Casting vote for a proposal
+      * @param proposalId The id of the proposal to vote on
+      * @param support The support value for the vote. 0=against, 1=for, 2=abstain
+    */
+    function voteCast(uint256 proposalId, uint256 support) external payable returns (string memory _eventName, bytes memory _eventParam) {
+        instaGovernor.castVoteWithReason(proposalId, uint8(support), "");
+
+        _eventName = "LogVoteCast(uint256,uint256,string)";
+        _eventParam = abi.encode(proposalId, support, "");
+    }
+
+    /**
+     * @dev Cast vote with reason.
+      * @notice Casting vote for a proposal
+      * @param proposalId The id of the proposal to vote on
+      * @param support The support value for the vote. 0=against, 1=for, 2=abstain
+      * @param reason The reason given for the vote
+    */
+    function voteCastWithReason(uint256 proposalId, uint256 support, string calldata reason) external payable returns (string memory _eventName, bytes memory _eventParam) {
+        instaGovernor.castVoteWithReason(proposalId, uint8(support), reason);
+
+        _eventName = "LogVoteCast(uint256,uint256,string)";
+        _eventParam = abi.encode(proposalId, support, reason);
+    }
+}
+
+contract ConnectV2InstadappGovernanceBravo is Resolver {
+    string public constant name = "Instadapp-governance-bravo-v1";
+}