diff --git a/app/scripts/controllers/transactions.js b/app/scripts/controllers/transactions.js
index 31e53554d..9568fcbb9 100644
--- a/app/scripts/controllers/transactions.js
+++ b/app/scripts/controllers/transactions.js
@@ -185,7 +185,8 @@ module.exports = class TransactionController extends EventEmitter {
 
   async addUnapprovedTransaction (txParams) {
     // validate
-    await this.txGasUtil.validateTxParams(txParams)
+    await this._validateTxParams(txParams)
+    this._normalizeTxParams(txParams)
     // construct txMeta
     let txMeta = this.txStateManager.generateTxMeta({txParams})
     this.addTx(txMeta)
@@ -215,7 +216,6 @@ module.exports = class TransactionController extends EventEmitter {
     }
     txParams.gasPrice = ethUtil.addHexPrefix(gasPrice.toString(16))
     txParams.value = txParams.value || '0x0'
-    if (txParams.to === null) delete txParams.to
     // set gasLimit
     return await this.txGasUtil.analyzeGasUsage(txMeta)
   }
@@ -314,6 +314,56 @@ module.exports = class TransactionController extends EventEmitter {
 //           PRIVATE METHODS
 //
 
+  _normalizeTxParams (txParams) {
+    delete txParams.chainId
+
+    if ( !txParams.to ) delete txParams.to
+    else txParams.to = ethUtil.addHexPrefix(txParams.to)
+
+    txParams.from = ethUtil.addHexPrefix(txParams.from).toLowerCase()
+
+    if (!txParams.data) delete txParams.data
+    else txParams.data = ethUtil.addHexPrefix(txParams.data)
+
+    if (txParams.value) txParams.value = ethUtil.addHexPrefix(txParams.value)
+
+    if (txParams.gas) txParams.gas = ethUtil.addHexPrefix(txParams.gas)
+    if (txParams.gasPrice) txParams.gas = ethUtil.addHexPrefix(txParams.gas)
+  }
+
+  async _validateTxParams (txParams) {
+    this._validateFrom(txParams)
+    this._validateRecipient(txParams)
+    if ('value' in txParams) {
+      const value = txParams.value.toString()
+      if (value.includes('-')) {
+        throw new Error(`Invalid transaction value of ${txParams.value} not a positive number.`)
+      }
+
+      if (value.includes('.')) {
+        throw new Error(`Invalid transaction value of ${txParams.value} number must be in wei`)
+      }
+    }
+  }
+
+  _validateFrom (txParams) {
+    if ( !(typeof txParams.from === 'string') ) throw new Error(`Invalid from address ${txParams.from} not a string`)
+    if (!ethUtil.isValidAddress(txParams.from)) throw new Error('Invalid from address')
+  }
+
+  _validateRecipient (txParams) {
+    if (txParams.to === '0x' || txParams.to === null ) {
+      if (txParams.data) {
+        delete txParams.to
+      } else {
+        throw new Error('Invalid recipient address')
+      }
+    } else if ( txParams.to !== undefined && !ethUtil.isValidAddress(txParams.to) ) {
+      throw new Error('Invalid recipient address')
+    }
+    return txParams
+  }
+
   _markNonceDuplicatesDropped (txId) {
     this.txStateManager.setTxStatusConfirmed(txId)
     // get the confirmed transactions nonce and from address
diff --git a/app/scripts/lib/tx-gas-utils.js b/app/scripts/lib/tx-gas-utils.js
index 829b4c421..c579e462a 100644
--- a/app/scripts/lib/tx-gas-utils.js
+++ b/app/scripts/lib/tx-gas-utils.js
@@ -4,7 +4,7 @@ const {
   BnMultiplyByFraction,
   bnToHex,
 } = require('./util')
-const { addHexPrefix, isValidAddress } = require('ethereumjs-util')
+const { addHexPrefix } = require('ethereumjs-util')
 const SIMPLE_GAS_COST = '0x5208' // Hex for 21000, cost of a simple send.
 
 /*
@@ -100,37 +100,4 @@ module.exports = class TxGasUtil {
     // otherwise use blockGasLimit
     return bnToHex(upperGasLimitBn)
   }
-
-  async validateTxParams (txParams) {
-    this.validateFrom(txParams)
-    this.validateRecipient(txParams)
-    if ('value' in txParams) {
-      const value = txParams.value.toString()
-      if (value.includes('-')) {
-        throw new Error(`Invalid transaction value of ${txParams.value} not a positive number.`)
-      }
-
-      if (value.includes('.')) {
-        throw new Error(`Invalid transaction value of ${txParams.value} number must be in wei`)
-      }
-    }
-  }
-
-  validateFrom (txParams) {
-    if ( !(typeof txParams.from === 'string') ) throw new Error(`Invalid from address ${txParams.from} not a string`)
-    if (!isValidAddress(txParams.from)) throw new Error('Invalid from address')
-  }
-
-  validateRecipient (txParams) {
-    if (txParams.to === '0x' || txParams.to === null ) {
-      if (txParams.data) {
-        delete txParams.to
-      } else {
-        throw new Error('Invalid recipient address')
-      }
-    } else if ( txParams.to !== undefined && !isValidAddress(txParams.to) ) {
-      throw new Error('Invalid recipient address')
-    }
-    return txParams
-  }
 }
\ No newline at end of file
diff --git a/test/unit/tx-controller-test.js b/test/unit/tx-controller-test.js
index 6bd010e7a..81d32ae29 100644
--- a/test/unit/tx-controller-test.js
+++ b/test/unit/tx-controller-test.js
@@ -216,7 +216,7 @@ describe('Transaction Controller', function () {
         from: '0x1678a085c290ebd122dc42cba69373b5953b831d',
         value: '0x01',
       }
-      txController.txGasUtil.validateTxParams(sample).then(() => {
+      txController._validateTxParams(sample).then(() => {
         done()
       }).catch(done)
     })
@@ -226,7 +226,7 @@ describe('Transaction Controller', function () {
         from: '0x1678a085c290ebd122dc42cba69373b5953b831d',
         value: '-0x01',
       }
-      txController.txGasUtil.validateTxParams(sample)
+      txController._validateTxParams(sample)
       .then(() => done('expected to thrown on negativity values but didn\'t'))
       .catch((err) => {
         assert.ok(err, 'error')
@@ -235,6 +235,76 @@ describe('Transaction Controller', function () {
     })
   })
 
+  describe('#_normalizeTxParams', () => {
+    it('should normalize txParams', () => {
+      let txParams = {
+        chainId: '0x1',
+        from: 'a7df1beDBF813f57096dF77FCd515f0B3900e402',
+        to: null,
+        data: '68656c6c6f20776f726c64',
+      }
+
+      txController._normalizeTxParams(txParams)
+
+      assert(!txParams.chainId, 'their should be no chainId')
+      assert(!txParams.to, 'their should be no to address if null')
+      assert.equal(txParams.from.slice(0, 2), '0x', 'from should be hexPrefixd')
+      assert.equal(txParams.data.slice(0, 2), '0x', 'data should be hexPrefixd')
+
+      txParams.to = 'a7df1beDBF813f57096dF77FCd515f0B3900e402'
+
+      txController._normalizeTxParams(txParams)
+      assert.equal(txParams.to.slice(0, 2), '0x', 'to should be hexPrefixd')
+
+    })
+  })
+
+  describe('#_validateRecipient', () => {
+    it('removes recipient for txParams with 0x when contract data is provided', function () {
+      const zeroRecipientandDataTxParams = {
+        from: '0x1678a085c290ebd122dc42cba69373b5953b831d',
+        to: '0x',
+        data: 'bytecode',
+      }
+      const sanitizedTxParams = txController._validateRecipient(zeroRecipientandDataTxParams)
+      assert.deepEqual(sanitizedTxParams, { from: '0x1678a085c290ebd122dc42cba69373b5953b831d', data: 'bytecode' }, 'no recipient with 0x')
+    })
+
+    it('should error when recipient is 0x', function () {
+      const zeroRecipientTxParams = {
+        from: '0x1678a085c290ebd122dc42cba69373b5953b831d',
+        to: '0x',
+      }
+      assert.throws(() => { txController._validateRecipient(zeroRecipientTxParams) }, Error, 'Invalid recipient address')
+    })
+  })
+
+
+  describe('#_validateFrom', () => {
+    it('should error when from is not a hex string', function () {
+
+      // where from is undefined
+      const txParams = {}
+      assert.throws(() => { txController._validateFrom(txParams) }, Error, `Invalid from address ${txParams.from} not a string`)
+
+      // where from is array
+      txParams.from = []
+      assert.throws(() => { txController._validateFrom(txParams) }, Error, `Invalid from address ${txParams.from} not a string`)
+
+      // where from is a object
+      txParams.from = {}
+      assert.throws(() => { txController._validateFrom(txParams) }, Error, `Invalid from address ${txParams.from} not a string`)
+
+      // where from is a invalid address
+      txParams.from = 'im going to fail'
+      assert.throws(() => { txController._validateFrom(txParams) }, Error, `Invalid from address`)
+
+      // should run
+      txParams.from ='0x1678a085c290ebd122dc42cba69373b5953b831d'
+      txController._validateFrom(txParams)
+      })
+  })
+
   describe('#addTx', function () {
     it('should emit updates', function (done) {
       const txMeta = {
diff --git a/test/unit/tx-gas-util-test.js b/test/unit/tx-gas-util-test.js
index 15d412c72..40ea8a7d6 100644
--- a/test/unit/tx-gas-util-test.js
+++ b/test/unit/tx-gas-util-test.js
@@ -11,46 +11,4 @@ describe('Tx Gas Util', function () {
       provider,
     })
   })
-
-  it('removes recipient for txParams with 0x when contract data is provided', function () {
-    const zeroRecipientandDataTxParams = {
-      from: '0x1678a085c290ebd122dc42cba69373b5953b831d',
-      to: '0x',
-      data: 'bytecode',
-    }
-    const sanitizedTxParams = txGasUtil.validateRecipient(zeroRecipientandDataTxParams)
-    assert.deepEqual(sanitizedTxParams, { from: '0x1678a085c290ebd122dc42cba69373b5953b831d', data: 'bytecode' }, 'no recipient with 0x')
-  })
-
-  it('should error when recipient is 0x', function () {
-    const zeroRecipientTxParams = {
-      from: '0x1678a085c290ebd122dc42cba69373b5953b831d',
-      to: '0x',
-    }
-    assert.throws(() => { txGasUtil.validateRecipient(zeroRecipientTxParams) }, Error, 'Invalid recipient address')
-  })
-
-  it('should error when from is not a hex string', function () {
-
-    // where from is undefined
-    const txParams = {}
-    assert.throws(() => { txGasUtil.validateFrom(txParams) }, Error, `Invalid from address ${txParams.from} not a string`)
-
-    // where from is array
-    txParams.from = []
-    assert.throws(() => { txGasUtil.validateFrom(txParams) }, Error, `Invalid from address ${txParams.from} not a string`)
-
-    // where from is a object
-    txParams.from = {}
-    assert.throws(() => { txGasUtil.validateFrom(txParams) }, Error, `Invalid from address ${txParams.from} not a string`)
-
-    // where from is a invalid address
-    txParams.from = 'im going to fail'
-    assert.throws(() => { txGasUtil.validateFrom(txParams) }, Error, `Invalid from address`)
-
-    // should run
-    txParams.from ='0x1678a085c290ebd122dc42cba69373b5953b831d'
-    txGasUtil.validateFrom(txParams)
-    })
-
 })