diff --git a/test/db.methods.js b/test/db.methods.js
new file mode 100644
index 0000000000000000000000000000000000000000..b4abfc4d791190169d481a7bdec9181823df8c5b
--- /dev/null
+++ b/test/db.methods.js
@@ -0,0 +1,18 @@
+require('es6-promise').polyfill();
+
+var assert = require('assert');
+var web3 = require('../index.js');
+var u = require('./utils.js');
+web3.setProvider(new web3.providers.WebSocketProvider('http://localhost:8080')); // TODO: create some mock provider
+
+describe('web3', function() {
+    describe('db', function() {
+        it('should have all methods implemented', function() {
+            u.methodExists(web3.db, 'put');
+            u.methodExists(web3.db, 'get');
+            u.methodExists(web3.db, 'putString');
+            u.methodExists(web3.db, 'getString');
+        });
+    });
+});
+
diff --git a/test/eth.methods.js b/test/eth.methods.js
new file mode 100644
index 0000000000000000000000000000000000000000..7190b27d27133a6ee5c001cffcb9bf7474178993
--- /dev/null
+++ b/test/eth.methods.js
@@ -0,0 +1,42 @@
+require('es6-promise').polyfill();
+
+var assert = require('assert');
+var web3 = require('../index.js');
+var u = require('./utils.js');
+web3.setProvider(new web3.providers.WebSocketProvider('http://localhost:8080')); // TODO: create some mock provider
+
+describe('web3', function() {
+    describe('eth', function() {
+        it('should have all methods implemented', function() {
+            u.methodExists(web3.eth, 'balanceAt');
+            u.methodExists(web3.eth, 'stateAt');
+            u.methodExists(web3.eth, 'storageAt');
+            u.methodExists(web3.eth, 'countAt');
+            u.methodExists(web3.eth, 'codeAt');
+            u.methodExists(web3.eth, 'transact');
+            u.methodExists(web3.eth, 'call');
+            u.methodExists(web3.eth, 'block');
+            u.methodExists(web3.eth, 'transaction');
+            u.methodExists(web3.eth, 'uncle');
+            u.methodExists(web3.eth, 'compilers');
+            u.methodExists(web3.eth, 'lll');
+            u.methodExists(web3.eth, 'solidity');
+            u.methodExists(web3.eth, 'serpent');
+            u.methodExists(web3.eth, 'logs');
+        });
+
+        it('should have all properties implemented', function () {
+            u.propertyExists(web3.eth, 'coinbase');
+            u.propertyExists(web3.eth, 'listening');
+            u.propertyExists(web3.eth, 'mining');
+            u.propertyExists(web3.eth, 'gasPrice');
+            u.propertyExists(web3.eth, 'account');
+            u.propertyExists(web3.eth, 'accounts');
+            u.propertyExists(web3.eth, 'peerCount');
+            u.propertyExists(web3.eth, 'defaultBlock');
+            u.propertyExists(web3.eth, 'number');
+        });
+    });
+});
+
+
diff --git a/test/methods.js b/test/methods.js
deleted file mode 100644
index 54d96b486a7b0d57117acd2decb088aed5342a90..0000000000000000000000000000000000000000
--- a/test/methods.js
+++ /dev/null
@@ -1,49 +0,0 @@
-require('es6-promise').polyfill();
-
-var assert = require('assert');
-var web3 = require('../index.js');
-web3.setProvider(new web3.providers.WebSocketProvider('http://localhost:8080')); // TODO: create some mock provider
-
-var methodExists = function (object, method) {
-    assert.equal('function', typeof object[method], 'method ' + method + ' is not implemented');
-};
-
-var propertyExists = function (object, property) {
-    assert.equal('object', typeof object[property], 'property ' + property + ' is not implemented');
-};
-
-describe('web3', function() {
-    describe('eth', function() {
-        it('should have all methods implemented', function() {
-            methodExists(web3.eth, 'balanceAt');
-            methodExists(web3.eth, 'stateAt');
-            methodExists(web3.eth, 'storageAt');
-            methodExists(web3.eth, 'countAt');
-            methodExists(web3.eth, 'codeAt');
-            methodExists(web3.eth, 'transact');
-            methodExists(web3.eth, 'call');
-            methodExists(web3.eth, 'block');
-            methodExists(web3.eth, 'transaction');
-            methodExists(web3.eth, 'uncle');
-            methodExists(web3.eth, 'compilers');
-            methodExists(web3.eth, 'lll');
-            methodExists(web3.eth, 'solidity');
-            methodExists(web3.eth, 'serpent');
-            methodExists(web3.eth, 'logs');
-        });
-
-        it('should have all properties implemented', function () {
-            propertyExists(web3.eth, 'coinbase');
-            propertyExists(web3.eth, 'listening');
-            propertyExists(web3.eth, 'mining');
-            propertyExists(web3.eth, 'gasPrice');
-            propertyExists(web3.eth, 'account');
-            propertyExists(web3.eth, 'accounts');
-            propertyExists(web3.eth, 'peerCount');
-            propertyExists(web3.eth, 'defaultBlock');
-            propertyExists(web3.eth, 'number');
-        });
-    });
-})
-
-
diff --git a/test/shh.methods.js b/test/shh.methods.js
new file mode 100644
index 0000000000000000000000000000000000000000..08f573a3ce657525a9b82518b96f56400249f1b3
--- /dev/null
+++ b/test/shh.methods.js
@@ -0,0 +1,19 @@
+require('es6-promise').polyfill();
+
+var assert = require('assert');
+var web3 = require('../index.js');
+var u = require('./utils.js');
+web3.setProvider(new web3.providers.WebSocketProvider('http://localhost:8080')); // TODO: create some mock provider
+
+describe('web3', function() {
+    describe('shh', function() {
+        it('should have all methods implemented', function() {
+            u.methodExists(web3.shh, 'post');
+            u.methodExists(web3.shh, 'newIdentity');
+            u.methodExists(web3.shh, 'haveIdentity');
+            u.methodExists(web3.shh, 'newGroup');
+            u.methodExists(web3.shh, 'addToGroup');
+        });
+    });
+});
+
diff --git a/test/utils.js b/test/utils.js
new file mode 100644
index 0000000000000000000000000000000000000000..4c508da67aef6fa082303b4b7fd9c6419e24ebfb
--- /dev/null
+++ b/test/utils.js
@@ -0,0 +1,15 @@
+var assert = require('assert');
+
+var methodExists = function (object, method) {
+    assert.equal('function', typeof object[method], 'method ' + method + ' is not implemented');
+};
+
+var propertyExists = function (object, property) {
+    assert.equal('object', typeof object[property], 'property ' + property + ' is not implemented');
+};
+
+module.exports = {
+    methodExists: methodExists,
+    propertyExists: propertyExists
+};
+
diff --git a/test/web3.methods.js b/test/web3.methods.js
new file mode 100644
index 0000000000000000000000000000000000000000..a7e02097874c8042014bbaf1e4e898a1ad29f5fe
--- /dev/null
+++ b/test/web3.methods.js
@@ -0,0 +1,18 @@
+require('es6-promise').polyfill();
+
+var assert = require('assert');
+var web3 = require('../index.js');
+var u = require('./utils.js');
+web3.setProvider(new web3.providers.WebSocketProvider('http://localhost:8080')); // TODO: create some mock provider
+
+describe('web3', function() {
+    it('should have all methods implemented', function() {
+        u.methodExists(web3, 'sha3');
+        u.methodExists(web3, 'toAscii');
+        u.methodExists(web3, 'fromAscii');
+        u.methodExists(web3, 'toFixed');
+        u.methodExists(web3, 'fromFixed');
+        u.methodExists(web3, 'offset');
+    });
+});
+