diff --git a/go.mod b/go.mod
index c358bc812..67ceea74f 100644
--- a/go.mod
+++ b/go.mod
@@ -17,13 +17,13 @@ require (
 	github.com/davecgh/go-spew v1.1.1
 	github.com/gagliardetto/gofuzz v1.2.2
 	github.com/gagliardetto/treeout v0.1.4
-	github.com/onsi/ginkgo/v2 v2.0.0
+	github.com/onsi/ginkgo/v2 v2.1.0
 	github.com/onsi/gomega v1.17.0
 	github.com/pkg/errors v0.9.1
 	github.com/prometheus/client_golang v1.12.0
 	github.com/rs/zerolog v1.26.1
 	github.com/smartcontractkit/chainlink-relay v0.0.0-20220127054158-7bb490de0ddb
-	github.com/smartcontractkit/integrations-framework v1.0.37-0.20220125141905-c76d1f04870f
+	github.com/smartcontractkit/integrations-framework v1.0.41
 	go.uber.org/atomic v1.9.0
 	go.uber.org/zap v1.19.1
 	golang.org/x/crypto v0.0.0-20211215165025-cf75a172585e
diff --git a/go.sum b/go.sum
index cffa26002..f5913bbcc 100644
--- a/go.sum
+++ b/go.sum
@@ -1856,8 +1856,8 @@ github.com/onsi/ginkgo v1.14.1/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9k
 github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
 github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
 github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
-github.com/onsi/ginkgo/v2 v2.0.0 h1:CcuG/HvWNkkaqCUpJifQY8z7qEMBJya6aLPx6ftGyjQ=
-github.com/onsi/ginkgo/v2 v2.0.0/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=
+github.com/onsi/ginkgo/v2 v2.1.0 h1:Rj+Was8Gt/ICSZY/CihVKK2cGy3rDqBYKSxVnmOXZzI=
+github.com/onsi/ginkgo/v2 v2.1.0/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=
 github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
 github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
 github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
@@ -2123,16 +2123,14 @@ github.com/smartcontractkit/chainlink v1.0.1-0.20211130190746-c1f78221a5e7/go.mo
 github.com/smartcontractkit/chainlink v1.0.1-0.20211207182844-d545260b5c89/go.mod h1:9kt1TqmBk6optJtwBM0wfnRrq7WPM0gwtGlD3vpU8Ms=
 github.com/smartcontractkit/chainlink v1.0.1-0.20211209223503-68928efa429a h1:no2PzLdUgYp4fLkVTGCiAuFx2ySAi2cjRjCmFeuViMc=
 github.com/smartcontractkit/chainlink v1.0.1-0.20211209223503-68928efa429a/go.mod h1:PSKo1vbT0/cUSbgH/rKNTDwWJyX8bc6M9/YVRe/nrXU=
-github.com/smartcontractkit/chainlink-relay v0.0.0-20220126142536-3aae7ed1e37c h1:ccrPbNlQYFqHSf9+q4hZzglgzAdxMyFkFlBSftpjnUQ=
-github.com/smartcontractkit/chainlink-relay v0.0.0-20220126142536-3aae7ed1e37c/go.mod h1:ojPwXEIk6xHFAoVMM5PoybiN/ici+FrVs5pI9/lq/WI=
 github.com/smartcontractkit/chainlink-relay v0.0.0-20220127054158-7bb490de0ddb h1:MvXSlZ6MMGvBi5n//mxCLWFlx2uR25BWWovWFm+oS8o=
 github.com/smartcontractkit/chainlink-relay v0.0.0-20220127054158-7bb490de0ddb/go.mod h1:ojPwXEIk6xHFAoVMM5PoybiN/ici+FrVs5pI9/lq/WI=
 github.com/smartcontractkit/chainlink-solana v0.0.0-20211203133247-1fbcc7f330d5/go.mod h1:NxZZQ0m2AGQ5vR1HptHkAyYCd68XA03SI2dEvkaalbs=
 github.com/smartcontractkit/chainlink-solana v0.0.0-20211207185700-a24214ba7afd/go.mod h1:NVHHwrCgC/7J0I872/uVgk0jEpyJIXEGAxZHrbgt190=
 github.com/smartcontractkit/helmenv v1.0.27 h1:BVxTQZQlFElh6YVK8mY9LSljX7uyx4jyImmHh/fMqEo=
 github.com/smartcontractkit/helmenv v1.0.27/go.mod h1:ef0doolSZf8ckqaWMIK2M+EPXdIKYVzttd6EXaCgCK4=
-github.com/smartcontractkit/integrations-framework v1.0.37-0.20220125141905-c76d1f04870f h1:H/9yoU5QNrrTcq0wc9xxWwqwtqhDEuK8QxxgRkoqlRw=
-github.com/smartcontractkit/integrations-framework v1.0.37-0.20220125141905-c76d1f04870f/go.mod h1:uAO2/yrAdSDJk9YrPi+MF/xg48pQ7khHr9pwQgEkJWQ=
+github.com/smartcontractkit/integrations-framework v1.0.41 h1:nf/0k2fIKlhCsFlvHfhMCrfxyNHzIV7YnAc95Q7Vv50=
+github.com/smartcontractkit/integrations-framework v1.0.41/go.mod h1:6CJgjZr1TIybPOHu4CewrKRgJUUbF6bqUGYFkC5NslI=
 github.com/smartcontractkit/libocr v0.0.0-20201203233047-5d9b24f0cbb5/go.mod h1:bfdSuLnBWCkafDvPGsQ1V6nrXhg046gh227MKi4zkpc=
 github.com/smartcontractkit/libocr v0.0.0-20211117215336-6c9726817b2d/go.mod h1:nq3crM3wVqnyMlM/4ZydTuJ/WyCapAsOt7P94oRgSPg=
 github.com/smartcontractkit/libocr v0.0.0-20211202172717-e8b0536a572e/go.mod h1:nq3crM3wVqnyMlM/4ZydTuJ/WyCapAsOt7P94oRgSPg=
diff --git a/tests/e2e/common/test_common.go b/tests/e2e/common/test_common.go
index c22da6f65..fd13f30bd 100644
--- a/tests/e2e/common/test_common.go
+++ b/tests/e2e/common/test_common.go
@@ -44,13 +44,13 @@ const (
 type OCRv2TestState struct {
 	Env              *environment.Environment
 	ChainlinkNodes   []client.Chainlink
-	ContractDeployer contracts.ContractDeployer
+	ContractDeployer *solclient.ContractDeployer
 	LinkToken        contracts.LinkToken
-	Store            contracts.OCRv2Store
+	Store            *solclient.Store
 	StoreAuth        string
-	BillingAC        contracts.OCRv2AccessController
-	RequesterAC      contracts.OCRv2AccessController
-	OCR2             contracts.OCRv2
+	BillingAC        *solclient.AccessController
+	RequesterAC      *solclient.AccessController
+	OCR2             *solclient.OCRv2
 	OffChainConfig   contracts.OffChainAggregatorV2Config
 	NodeKeysBundle   []NodeKeysBundle
 	MockServer       *client.MockserverClient
@@ -137,7 +137,7 @@ func (m *OCRv2TestState) SetupClients() {
 }
 
 func (m *OCRv2TestState) DumpContracts() error {
-	s := ContractsState{Feed: m.Store.(*solclient.Store).Feed.PrivateKey.String()}
+	s := ContractsState{Feed: m.Store.Feed.PrivateKey.String()}
 	d, err := json.Marshal(s)
 	if err != nil {
 		return err
diff --git a/tests/e2e/solclient/deployer.go b/tests/e2e/solclient/deployer.go
index be7b67bb3..251b39045 100644
--- a/tests/e2e/solclient/deployer.go
+++ b/tests/e2e/solclient/deployer.go
@@ -48,23 +48,7 @@ type ContractDeployer struct {
 	Env    *environment.Environment
 }
 
-func (c *ContractDeployer) DeployOCRv2Proxy(addr string) (contracts.OCRv2Proxy, error) {
-	panic("implement me")
-}
-
-func (c *ContractDeployer) DeployOCRv2ValidatorProxy(addr string) (contracts.OCRv2Proxy, error) {
-	panic("implement me")
-}
-
-func (c *ContractDeployer) DeployOCRv2Flags(lowAccessController string, raiseAccessController string) (contracts.OCRv2Flags, error) {
-	panic("implement me")
-}
-
-func (c *ContractDeployer) DeployOCRv2Validator(threshold uint32, flags string) (contracts.OCRv2Flags, error) {
-	panic("implement me")
-}
-
-func (c *ContractDeployer) DeployOCRv2Store(billingAC string) (contracts.OCRv2Store, error) {
+func (c *ContractDeployer) DeployOCRv2Store(billingAC string) (*Store, error) {
 	programWallet := c.Client.ProgramWallets["store-keypair.json"]
 	payer := c.Client.DefaultWallet
 	accInstruction, err := c.Client.CreateAccInstr(c.Client.Accounts.Store, StoreAccountSize, programWallet.PublicKey())
@@ -111,38 +95,6 @@ func (c *ContractDeployer) DeployOCRv2Store(billingAC string) (contracts.OCRv2St
 	}, nil
 }
 
-func (c *ContractDeployer) Balance() (*big.Float, error) {
-	panic("implement me")
-}
-
-func (c *ContractDeployer) DeployStorageContract() (contracts.Storage, error) {
-	panic("implement me")
-}
-
-func (c *ContractDeployer) DeployAPIConsumer(linkAddr string) (contracts.APIConsumer, error) {
-	panic("implement me")
-}
-
-func (c *ContractDeployer) DeployOracle(linkAddr string) (contracts.Oracle, error) {
-	panic("implement me")
-}
-
-func (c *ContractDeployer) DeployReadAccessController() (contracts.ReadAccessController, error) {
-	panic("implement me")
-}
-
-func (c *ContractDeployer) DeployFlags(rac string) (contracts.Flags, error) {
-	panic("implement me")
-}
-
-func (c *ContractDeployer) DeployDeviationFlaggingValidator(flags string, flaggingThreshold *big.Int) (contracts.DeviationFlaggingValidator, error) {
-	panic("implement me")
-}
-
-func (c *ContractDeployer) DeployFluxAggregatorContract(linkAddr string, fluxOptions contracts.FluxAggregatorOptions) (contracts.FluxAggregator, error) {
-	panic("implement me")
-}
-
 func (c *ContractDeployer) addMintToAccInstr(instr *[]solana.Instruction, dest *solana.Wallet, amount uint64) error {
 	*instr = append(*instr, token.NewMintToInstruction(
 		amount,
@@ -154,7 +106,7 @@ func (c *ContractDeployer) addMintToAccInstr(instr *[]solana.Instruction, dest *
 	return nil
 }
 
-func (c *ContractDeployer) DeployLinkTokenContract() (contracts.LinkToken, error) {
+func (c *ContractDeployer) DeployLinkTokenContract() (*LinkToken, error) {
 	var err error
 	payer := c.Client.DefaultWallet
 
@@ -202,7 +154,7 @@ func (c *ContractDeployer) DeployLinkTokenContract() (contracts.LinkToken, error
 	}, nil
 }
 
-func (c *ContractDeployer) DeployOCRv2(billingControllerAddr string, requesterControllerAddr string, linkTokenAddr string) (contracts.OCRv2, error) {
+func (c *ContractDeployer) DeployOCRv2(billingControllerAddr string, requesterControllerAddr string, linkTokenAddr string) (*OCRv2, error) {
 	programWallet := c.Client.ProgramWallets["ocr2-keypair.json"]
 	payer := c.Client.DefaultWallet
 	ocrAccInstruction, err := c.Client.CreateAccInstr(c.Client.Accounts.OCR, OCRAccountAccountSize, programWallet.PublicKey())
@@ -295,7 +247,7 @@ func (c *ContractDeployer) DeployProgramRemote(programName string) error {
 	return nil
 }
 
-func (c *ContractDeployer) DeployOCRv2AccessController() (contracts.OCRv2AccessController, error) {
+func (c *ContractDeployer) DeployOCRv2AccessController() (*AccessController, error) {
 	programWallet := c.Client.ProgramWallets["access_controller-keypair.json"]
 	payer := c.Client.DefaultWallet
 	stateAcc := solana.NewWallet()