diff --git a/.circleci/config.yml b/.circleci/config.yml
index 6339f0a1ea17a36e6eee7a5c0ef71f4150b97404..d8b434bd9655f37eccc75790bcd3276693350ae3 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -26,7 +26,11 @@ jobs:
           - v1-dependencies-{{ checksum "requirements.txt" }}
           # fallback to using the latest cache if no exact match is found
           - v1-dependencies-
-
+      - run:
+          name: Setup Code Climate test-reporter
+          command: |
+            curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
+            chmod +x ./cc-test-reporter
       - run:
           name: install dependencies
           command: |
@@ -42,7 +46,9 @@ jobs:
       - run:
           name: run tests
           command: |
+            ./cc-test-reporter before-build
             tox -e py36,pylint
+            ./cc-test-reporter after-build --exit-code $?
 
       - deploy:
           name: Push coverage
diff --git a/beem/comment.py b/beem/comment.py
index 66ec0a3c3532908345cd01124e336daff43fafd6..ee800a28d6498e032ea8cf8b7410f57d1b7c61e7 100644
--- a/beem/comment.py
+++ b/beem/comment.py
@@ -7,7 +7,7 @@ from builtins import str
 from .instance import shared_steem_instance
 from .account import Account
 from .amount import Amount
-from .utils import resolve_authorperm, construct_authorperm, derive_permlink, keep_in_dict, make_patch, formatTimeString
+from .utils import resolve_authorperm, construct_authorperm, derive_permlink, remove_from_dict, make_patch, formatTimeString
 from .blockchainobject import BlockchainObject
 from .exceptions import ContentDoesNotExistsException, VotingInvalidOnArchivedPost
 from beembase import operations
@@ -510,10 +510,10 @@ class Comment(BlockchainObject):
 
         # if comment_options are used, add a new op to the transaction
         if comment_options or beneficiaries:
-            options = keep_in_dict(comment_options or {}, [
+            options = remove_from_dict(comment_options or {}, [
                 'max_accepted_payout', 'percent_steem_dollars', 'allow_votes',
                 'allow_curation_rewards', 'extensions'
-            ])
+            ], keep_keys=True)
             # override beneficiaries extension
             if beneficiaries:
                 # validate schema
diff --git a/beem/utils.py b/beem/utils.py
index cd922920e519e4fde528a9afa302a18146280cc3..55fe34e5440d7c303c46c339cd3a4efd9fd44dae 100644
--- a/beem/utils.py
+++ b/beem/utils.py
@@ -217,26 +217,18 @@ def test_proposal_in_buffer(buf, operation_name, id):
         )
 
 
-def keep_in_dict(obj, allowed_keys=list()):
-    """ Prune a class or dictionary of all but allowed keys.
+def remove_from_dict(obj, keys=list(), keep_keys=True):
+    """ Prune a class or dictionary of all but keys (keep_keys=True).
+        Prune a class or dictionary of specified keys.(keep_keys=False).
     """
     if type(obj) == dict:
         items = list(obj.items())
     else:
         items = list(obj.__dict__.items())
-
-    return {k: v for k, v in items if k in allowed_keys}
-
-
-def remove_from_dict(obj, remove_keys=list()):
-    """ Prune a class or dictionary of specified keys.
-    """
-    if type(obj) == dict:
-        items = list(obj.items())
+    if keep_keys:
+        return {k: v for k, v in items if k in keys}
     else:
-        items = list(obj.__dict__.items())
-
-    return {k: v for k, v in items if k not in remove_keys}
+        return {k: v for k, v in items if k not in keys}
 
 
 def make_patch(a, b, n=3):
diff --git a/tests/test_utils.py b/tests/test_utils.py
index 52abfb6f426168059b718da068b9b6e806d9e6ac..5d92bf6080ac2606707d0ab3d0c27b5c14959c8e 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -14,7 +14,8 @@ from beem.utils import (
     sanitize_permlink,
     derive_permlink,
     resolve_root_identifier,
-    make_patch
+    make_patch,
+    remove_from_dict
 )
 
 
@@ -64,3 +65,13 @@ class Testcases(unittest.TestCase):
     def test_formatTimedelta(self):
         now = datetime.now()
         self.assertEqual(formatTimedelta(now-now), '0:00.00')
+
+    def test_remove_from_dict(self):
+        a = {'a':1, 'b':2}
+        b = {'b':2}
+        self.assertEqual(remove_from_dict(a, ['b'], keep_keys=True), {'b':2})
+        self.assertEqual(remove_from_dict(a, ['a'], keep_keys=False), {'b':2})
+        self.assertEqual(remove_from_dict(b, ['b'], keep_keys=True), {'b':2})
+        self.assertEqual(remove_from_dict(b, ['a'], keep_keys=False), {'b':2})
+        self.assertEqual(remove_from_dict(b, [], keep_keys=True), {})
+        self.assertEqual(remove_from_dict(a, ['a','b'], keep_keys=False), {})