diff --git a/.travis.yml b/.travis.yml
index b75ea72..84321a6 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,15 +1,12 @@
 language: python
 python:
-  - 3.3
   - 3.4
+  - 3.5
 
 install:
-- pip install --upgrade setuptools
-- pip install pyflakes
-- pip install pep8
-- pip install coveralls --use-mirrors
-- pip install aiohttp
-- python setup.py develop
+- pip install --upgrade pip
+- pip install -r requirements-dev.txt
+- pip install coveralls
 
 script:
 - pyflakes aiohttp_security tests
diff --git a/setup.py b/setup.py
index 86762f5..ccbf9da 100644
--- a/setup.py
+++ b/setup.py
@@ -2,28 +2,18 @@ import codecs
 from setuptools import setup, find_packages
 import os
 import re
+import subprocess
 import sys
 
 from setuptools.command.test import test as TestCommand
 
 
 class PyTest(TestCommand):
-    user_options = [('pytest-args=', 'a', "Arguments to pass to py.test")]
+    user_options = []
 
-    def initialize_options(self):
-        TestCommand.initialize_options(self)
-        self.pytest_args = []
-
-    def finalize_options(self):
-        TestCommand.finalize_options(self)
-        self.test_args = []
-        self.test_suite = True
-
-    def run_tests(self):
-        # import here, cause outside the eggs aren't loaded
-        import pytest
-        errno = pytest.main(self.pytest_args)
-        sys.exit(errno)
+    def run(self):
+        errno = subprocess.call([sys.executable, '-m', 'pytest', 'tests'])
+        raise SystemExit(errno)
 
 
 with codecs.open(os.path.join(os.path.abspath(os.path.dirname(
@@ -37,7 +27,7 @@ with codecs.open(os.path.join(os.path.abspath(os.path.dirname(
 def read(f):
     return open(os.path.join(os.path.dirname(__file__), f)).read().strip()
 
-install_requires = ['aiohttp>=0.14']
+install_requires = ['aiohttp>=0.18']
 tests_require = install_requires + ['pytest']
 extras_require = {}