diff --git a/requirements-dev.txt b/requirements-dev.txt
index 0b7b8da..5c67b4e 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -10,7 +10,9 @@ pylint;implementation_name=="cpython"
 
 coverage
 mock;python_version<"3.0"
-pytest
-pytest-cov
+pytest>=4.6
+pytest-cov;implementation_name=="cpython"
+pytest-cov==2.8.1;implementation_name=="pypy"
+pytest-cov==2.8.1;python_version<="3.7"
 tox
 wheel
diff --git a/src/pydecor/decorators/_utility.py b/src/pydecor/decorators/_utility.py
index cd04ffb..300d28b 100644
--- a/src/pydecor/decorators/_utility.py
+++ b/src/pydecor/decorators/_utility.py
@@ -59,7 +59,7 @@ def get_fn_args(decorated, args):
             # types)
             if decor_name in cls_dict and isfunction(cls_dict[decor_name]):
                 # The first argument is probably a "self" variable
-                fn_args = args[1:]
+                fn_args = args
 
     return fn_args
 

diff --git a/tests/decorators/test_generics.py b/tests/decorators/test_generics.py
index 6340048..af0e412 100644
--- a/tests/decorators/test_generics.py
+++ b/tests/decorators/test_generics.py
@@ -317,12 +317,13 @@ class TestBefore:
             def to_call_static(*args):
                 tracker.append({4: args})
 
-        _ToDecorate().to_call(1, 2)
+        instance = _ToDecorate()
+        instance.to_call(1, 2)
         _ToDecorate().to_call_cls(3, 4)
         _ToDecorate().to_call_static(5, 6)
 
         assert len(tracker) == 6
-        assert tracker[0] == {1: (1, 2)}
+        assert tracker[0] == {1: (instance, 1, 2)}
         assert tracker[1] == {2: (1, 2)}
         assert tracker[2] == {1: (3, 4)}
         assert tracker[3] == {3: (3, 4)}
@@ -606,13 +607,14 @@ class TestAfter:
             def to_call_static(*args):
                 tracker.append({4: args})
 
-        _ToDecorate().to_call(1, 2)
+        instance = _ToDecorate()
+        instance.to_call(1, 2)
         _ToDecorate().to_call_cls(3, 4)
         _ToDecorate().to_call_static(5, 6)
 
         assert len(tracker) == 6
         assert tracker[0] == {2: (1, 2)}
-        assert tracker[1] == {1: (1, 2)}
+        assert tracker[1] == {1: (instance, 1, 2)}
         assert tracker[2] == {3: (3, 4)}
         assert tracker[3] == {1: (3, 4)}
         assert tracker[4] == {4: (5, 6)}
@@ -890,12 +892,13 @@ class TestInstead:
             def to_call_static(*args):
                 tracker.append({4: args})
 
-        _ToDecorate().to_call(1, 2)
+        instance = _ToDecorate()
+        instance.to_call(1, 2)
         _ToDecorate().to_call_cls(3, 4)
         _ToDecorate().to_call_static(5, 6)
 
         assert len(tracker) == 3
-        assert tracker[0] == {1: (1, 2)}
+        assert tracker[0] == {1: (instance, 1, 2)}
         assert tracker[1] == {1: (3, 4)}
         assert tracker[2] == {1: (5, 6)}
 
diff --git a/tests/decorators/test_ready_to_wear.py b/tests/decorators/test_ready_to_wear.py
index b5cd57d..876b4a8 100644
--- a/tests/decorators/test_ready_to_wear.py
+++ b/tests/decorators/test_ready_to_wear.py
@@ -68,7 +68,25 @@ def test_intercept(raises, catch, reraise, include_handler):
     if handler is not None and not will_catch:
         handler.assert_not_called()
 
-    wrapped.assert_called_once_with(*(), **{})
+    wrapped.assert_called_once_with(*(), **{})  # type: ignore
+
+
+def test_intercept_method():
+    """Test decorating an instance method with intercept."""
+
+    calls = []
+
+    def _handler(exc):
+        calls.append(exc)
+
+    class SomeClass:
+        @intercept(handler=_handler)
+        def it_raises(self, val):
+            raise ValueError(val)
+
+    SomeClass().it_raises("a")
+    assert len(calls) == 1
+    assert isinstance(calls[0], ValueError)
 
 
 def test_log_call():
@@ -89,7 +107,7 @@ def test_log_call():
         name="func", args=call_args, kwargs=call_kwargs, result=call_res
     )
 
-    exp_logger.debug.assert_called_once_with(exp_msg)  # type: ignore
+    exp_logger.debug.assert_called_once_with(exp_msg)
 
 
 class TestMemoization:
diff --git a/tests/test_functions.py b/tests/test_functions.py
index 87015ec..ede8133 100644
--- a/tests/test_functions.py
+++ b/tests/test_functions.py
@@ -66,7 +66,7 @@ def test_interceptor(raises, catch, reraise, include_handler):
     if handler is not None and not will_catch:
         handler.assert_not_called()
 
-    wrapped.assert_called_once_with(*(), **{})
+    wrapped.assert_called_once_with(*(), **{})  # type: ignore
 
 
 def test_log_call():
@@ -88,4 +88,4 @@ def test_log_call():
         name="func", args=call_args, kwargs=call_kwargs, result=call_res
     )
 
-    exp_logger.debug.assert_called_once_with(exp_msg)  # type: ignore
+    exp_logger.debug.assert_called_once_with(exp_msg)

Support for decorating methods
Hello,

I just came across this package and contains several facilities that I find very useful to create expressive code, so I wanted to give it a try. However, when trying to use the "intercept" decorator on an instance method, it seems that the 'self' parameter gets swallowed, raising an error:

```
{TypeError}myfunction() missing 1 required positional argument: 'x'
```

Code example:
```
def _handle_exception(exception):
    exception_name = type(exception).__name__
    if exception_name == 'NoSuchKey':
        raise EntityNotFound('The specified key does not exist')
    else:
        raise exception

... skipping class definition and details...

@intercept(handler=_handle_exception)
def get_node_information(self, key):
     return self._key_to_meta(key)
```

Any workarounds for this case? Thanks!
 
tests/decorators/test_generics.py::TestBefore::test_before_direct_method_decoration_equivalent tests/decorators/test_generics.py::TestAfter::test_after_direct_method_decoration_equivalent tests/decorators/test_generics.py::TestInstead::test_instead_direct_method_decoration_equivalent tests/decorators/test_ready_to_wear.py::test_intercept_method
tests/decorators/test_generics.py::TestDecorated::test_str tests/decorators/test_generics.py::TestDecorated::test_call tests/decorators/test_generics.py::TestDecorated::test_call_sets_result tests/decorators/test_generics.py::TestDecorated::test_immutable tests/decorators/test_generics.py::TestBefore::test_before_no_ret tests/decorators/test_generics.py::TestBefore::test_before_ret tests/decorators/test_generics.py::TestBefore::test_before_receives_kwargs tests/decorators/test_generics.py::TestBefore::test_before_implicit_instancemethod tests/decorators/test_generics.py::TestBefore::test_before_implicit_classmethod tests/decorators/test_generics.py::TestBefore::test_before_implicit_staticmethod tests/decorators/test_generics.py::TestBefore::test_before_implicit_instancemethod_instace_only tests/decorators/test_generics.py::TestBefore::test_before_implicit_classmethod_instance_only tests/decorators/test_generics.py::TestBefore::test_before_implicit_staticmethod_instance_only tests/decorators/test_generics.py::TestBefore::test_before_method_decorates_class_if_not_implicit tests/decorators/test_generics.py::TestBefore::test_before_decorates_on_class_references tests/decorators/test_generics.py::TestAfter::test_after_no_ret tests/decorators/test_generics.py::TestAfter::test_after_ret tests/decorators/test_generics.py::TestAfter::test_after_receives_kwargs tests/decorators/test_generics.py::TestAfter::test_after_implicit_instancemethod tests/decorators/test_generics.py::TestAfter::test_after_implicit_classmethod tests/decorators/test_generics.py::TestAfter::test_after_implicit_staticmethod tests/decorators/test_generics.py::TestAfter::test_after_implicit_instancemethod_instace_only tests/decorators/test_generics.py::TestAfter::test_after_implicit_classmethod_instance_only tests/decorators/test_generics.py::TestAfter::test_after_implicit_staticmethod_instance_only tests/decorators/test_generics.py::TestAfter::test_after_method_decorates_class_if_not_implicit tests/decorators/test_generics.py::TestAfter::test_after_decorates_on_class_references tests/decorators/test_generics.py::TestInstead::test_instead_no_call tests/decorators/test_generics.py::TestInstead::test_instead_calls tests/decorators/test_generics.py::TestInstead::test_instead_receives_kwargs tests/decorators/test_generics.py::TestInstead::test_instead_implicit_instancemethod tests/decorators/test_generics.py::TestInstead::test_instead_implicit_classmethod tests/decorators/test_generics.py::TestInstead::test_instead_implicit_staticmethod tests/decorators/test_generics.py::TestInstead::test_instead_implicit_instancemethod_instace_only tests/decorators/test_generics.py::TestInstead::test_instead_implicit_classmethod_instance_only tests/decorators/test_generics.py::TestInstead::test_instead_implicit_staticmethod_instance_only tests/decorators/test_generics.py::TestInstead::test_instead_method_decorates_class_if_not_implicit tests/decorators/test_generics.py::TestInstead::test_instead_decorates_on_class_references tests/decorators/test_generics.py::TestDecorator::test_all_decorators tests/decorators/test_generics.py::TestDecorator::test_all_decorators_constructed tests/decorators/test_generics.py::TestDecorator::test_all_callables_get_extras tests/decorators/test_generics.py::TestDecorator::test_all_callables_get_specific_extras tests/decorators/test_generics.py::TestDecorator::test_all_callables_specific_extras_overridden tests/decorators/test_generics.py::TestDecorator::test_just_before tests/decorators/test_generics.py::TestDecorator::test_just_after tests/decorators/test_generics.py::TestDecorator::test_just_instead tests/decorators/test_generics.py::TestDecorator::test_all_decorators_implicit_class tests/decorators/test_generics.py::TestDecorator::test_at_least_one_callable_must_be_specified tests/decorators/test_generics.py::test_extras_persistence[before] tests/decorators/test_generics.py::test_extras_persistence[after] tests/decorators/test_generics.py::test_extras_persistence[instead] tests/decorators/test_generics.py::test_extras_persistence_class[before] tests/decorators/test_generics.py::test_extras_persistence_class[after] tests/decorators/test_generics.py::test_extras_persistence_class[instead] tests/decorators/test_generics.py::test_extras_persistence_class_inst_only[before] tests/decorators/test_generics.py::test_extras_persistence_class_inst_only[after] tests/decorators/test_generics.py::test_extras_persistence_class_inst_only[instead] tests/decorators/test_ready_to_wear.py::test_intercept[Exception-Exception-ValueError-False] tests/decorators/test_ready_to_wear.py::test_intercept[Exception-Exception-ValueError-True] tests/decorators/test_ready_to_wear.py::test_intercept[Exception-Exception-True-True] tests/decorators/test_ready_to_wear.py::test_intercept[Exception-Exception-True-False] tests/decorators/test_ready_to_wear.py::test_intercept[None-Exception-ValueError-False] tests/decorators/test_ready_to_wear.py::test_intercept[None-Exception-ValueError-True] tests/decorators/test_ready_to_wear.py::test_intercept[Exception-Exception-None-False] tests/decorators/test_ready_to_wear.py::test_intercept[Exception-Exception-None-True] tests/decorators/test_ready_to_wear.py::test_intercept[Exception-RuntimeError-ValueError-False] tests/decorators/test_ready_to_wear.py::test_intercept[Exception-RuntimeError-ValueError-True] tests/decorators/test_ready_to_wear.py::test_log_call tests/decorators/test_ready_to_wear.py::TestMemoization::test_memoize_basic[args0-kwargs0] tests/decorators/test_ready_to_wear.py::TestMemoization::test_memoize_basic[args1-kwargs1] tests/decorators/test_ready_to_wear.py::TestMemoization::test_memoize_basic[args2-kwargs2] tests/decorators/test_ready_to_wear.py::TestMemoization::test_memoize_basic[args3-kwargs3] tests/decorators/test_ready_to_wear.py::TestMemoization::test_memoize_basic[args4-kwargs4] tests/decorators/test_ready_to_wear.py::TestMemoization::test_memoize_basic[args5-kwargs5] tests/decorators/test_ready_to_wear.py::TestMemoization::test_memoize_basic[args6-kwargs6] tests/decorators/test_ready_to_wear.py::TestMemoization::test_memoize_lru tests/decorators/test_ready_to_wear.py::TestMemoization::test_memoize_fifo tests/decorators/test_ready_to_wear.py::TestMemoization::test_memoization_timed tests/test_functions.py::test_interceptor[Exception-Exception-ValueError-False] tests/test_functions.py::test_interceptor[Exception-Exception-ValueError-True] tests/test_functions.py::test_interceptor[None-Exception-ValueError-False] tests/test_functions.py::test_interceptor[None-Exception-ValueError-True] tests/test_functions.py::test_interceptor[Exception-Exception-None-False] tests/test_functions.py::test_interceptor[Exception-Exception-None-True] tests/test_functions.py::test_interceptor[Exception-RuntimeError-ValueError-False] tests/test_functions.py::test_interceptor[Exception-RuntimeError-ValueError-True] tests/test_functions.py::test_log_call