diff --git a/.travis.yml b/.travis.yml
index d7fc1bfde1f286dc7c1eba1a910131f9e5066d7b..e2932d44896915924149f140ef75d4b1d671fd04 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -6,11 +6,15 @@ python:
  - "3.8"
  - "nightly"
  - "pypy3"
+before_script:
+  - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
+  - chmod +x ./cc-test-reporter
+  - ./cc-test-reporter before-build
 install:
- - pip install -r requirements.txt
- - pip install --force-reinstall "coverage>=4.0,<4.4" codeclimate-test-reporter
+  - pip install -r requirements.txt
+  - pip install nose2 mock coverage
 script:
- - python setup.py test
- - python setup.py sdist bdist bdist_wheel
+  - bash tests/test_posix/test_hang_until_sig.sh
+  - coverage run -m nose2
 after_success:
- - codeclimate-test-reporter
+  - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
diff --git a/docs/index.rst b/docs/index.rst
index a9b6b9d744d360ebc00ce6458dd3015d97ae08a8..5b07bbdfd853d1e2504a327a11094fdaa95e3e69 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -10,6 +10,7 @@ Welcome to firanka's documentation!
    :maxdepth: 2
    :caption: Contents:
 
+   series
 
 
 Indices and tables
diff --git a/docs/series.rst b/docs/series.rst
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/firanka/series/base.py b/firanka/series/base.py
index 925e0e7736059b0be02bce2fd28a7eac2474d83a..367b74c2569807fc4d5fa54dc3df1c24c53286f7 100644
--- a/firanka/series/base.py
+++ b/firanka/series/base.py
@@ -1,5 +1,3 @@
-
-
 import inspect
 
 from sortedcontainers import SortedList
@@ -13,7 +11,7 @@ def _has_arguments(fun, n):  # used only in assert clauses
     return len(inspect.getargspec(fun).args) >= n
 
 
-class Series(object):
+class Series:
     """
     Abstract, base class for series.
 
@@ -44,6 +42,7 @@ class Series(object):
             self.domain.contains_or_fail(item)
             return self._get_for(item)
 
+    @abstractmethod
     def _get_for(self, item):
         raise NotImplementedError(u'This is abstract, override me!')
 
diff --git a/unittest.cfg b/unittest.cfg
deleted file mode 100644
index 84743c4d941883b3d937ca5205dd980c16fc76de..0000000000000000000000000000000000000000
--- a/unittest.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-[coverage]
-always-on = True