diff --git a/rwm.py b/rwm.py
index 3cc6f74148bdc7492b5517d5032d6b54805d1783..7a0e636798686d0b044fb169e6ce5792fff5e913 100755
--- a/rwm.py
+++ b/rwm.py
@@ -45,18 +45,17 @@ def run_command(*args, **kwargs):
         "encoding": "utf-8",
     })
     logger.debug("run_command, %s", (args, kwargs))
-    proc = subprocess.run(*args, **kwargs, check=False)
-    return (proc.returncode, proc.stdout, proc.stderr)
+    return subprocess.run(*args, **kwargs, check=False)
 
 
-def wrap_output(returncode, stdout, stderr):
+def wrap_output(process):
     """wraps command output and prints results"""
 
-    if stdout:
-        print(stdout)
-    if stderr:
-        print(stderr, file=sys.stderr)
-    return returncode
+    if process.stdout:
+        print(process.stdout)
+    if process.stderr:
+        print(process.stderr, file=sys.stderr)
+    return process.returncode
 
 
 def rclone_obscure_password(plaintext, iv=None):
@@ -81,13 +80,7 @@ class RWM:
         self.config = config
 
     def aws_cmd(self, args):
-        """
-        aws cli wrapper
-
-        :param list args: list passed to subprocess
-        :return: returncode, stdout, stderr
-        :rtype: tuple
-        """
+        """aws cli wrapper"""
 
         env = {
             "PATH": os.environ["PATH"],
@@ -103,13 +96,7 @@ class RWM:
         return run_command(["aws", "--endpoint-url", self.config["RWM_S3_ENDPOINT_URL"]] + args, env=env)
 
     def rclone_cmd(self, args):
-        """
-        rclone wrapper
-
-        :param list args: list passed to subprocess
-        :return: returncode, stdout, stderr
-        :rtype: tuple
-        """
+        """rclone wrapper"""
 
         env = {
             "RCLONE_CONFIG": "",
@@ -128,10 +115,6 @@ class RWM:
         rclone crypt wrapper
         * https://rclone.org/docs/#config-file
         * https://rclone.org/crypt/
-
-        :param list args: list passed to subprocess
-        :return: returncode, stdout, stderr
-        :rtype: tuple
         """
 
         env = {
@@ -190,13 +173,13 @@ def main(argv=None):
     rwm = RWM(config)
 
     if args.command == "aws":
-        return wrap_output(*rwm.aws_cmd(args.cmd_args))
+        return wrap_output(rwm.aws_cmd(args.cmd_args))
     if args.command == "rclone":
-        return wrap_output(*rwm.rclone_cmd(args.cmd_args))
+        return wrap_output(rwm.rclone_cmd(args.cmd_args))
     if args.command == "rclone_crypt":
-        return wrap_output(*rwm.rclone_crypt_cmd(args.cmd_args))
+        return wrap_output(rwm.rclone_crypt_cmd(args.cmd_args))
     if args.command == "restic":
-        return wrap_output(*rwm.restic_cmd(args.cmd_args))
+        return wrap_output(rwm.restic_cmd(args.cmd_args))
 
     return 0
 
diff --git a/tests/test_default.py b/tests/test_default.py
index 504abc96f3fca44f6c9ed4ac6d547e2a2792e507..26a53ee96eaee6f99748e4615d261d5038995670 100644
--- a/tests/test_default.py
+++ b/tests/test_default.py
@@ -1,7 +1,8 @@
 """default tests"""
 
+import json
 from pathlib import Path
-from textwrap import dedent
+from subprocess import CompletedProcess
 from unittest.mock import Mock, patch
 
 import boto3
@@ -32,7 +33,7 @@ def test_sublist():
 def test_wrap_output():
     """test wrap_output"""
 
-    assert wrap_output(11, "dummy", "dummy") == 11
+    assert wrap_output(CompletedProcess(args='dummy', returncode=11, stdout="dummy", stderr="dummy")) == 11
 
 
 def test_main(tmpworkdir: str):  # pylint: disable=unused-argument
@@ -44,7 +45,7 @@ def test_main(tmpworkdir: str):  # pylint: disable=unused-argument
     assert rwm_main([]) == 0
 
     # command branches
-    mock = Mock(return_value=(0, "", ""))
+    mock = Mock(return_value=CompletedProcess(args='dummy', returncode=0))
     for item in ["aws", "rclone", "rclone_crypt", "restic"]:
         with patch.object(rwm.RWM, f"{item}_cmd", mock):
             assert rwm_main([item]) == 0
@@ -53,7 +54,7 @@ def test_main(tmpworkdir: str):  # pylint: disable=unused-argument
 def test_aws_cmd(tmpworkdir: str, motoserver: str):  # pylint: disable=unused-argument
     """test aws command"""
 
-    rwm = RWM({
+    trwm = RWM({
         "RWM_S3_ENDPOINT_URL": motoserver,
         "RWM_S3_ACCESS_KEY": "dummy",
         "RWM_S3_SECRET_KEY": "dummy",
@@ -63,17 +64,17 @@ def test_aws_cmd(tmpworkdir: str, motoserver: str):  # pylint: disable=unused-ar
 
     assert test_bucket not in buckets_plain_list(s3.list_buckets())
 
-    rwm.aws_cmd(["s3", "mb", f"s3://{test_bucket}"])
+    trwm.aws_cmd(["s3", "mb", f"s3://{test_bucket}"])
     assert test_bucket in buckets_plain_list(s3.list_buckets())
 
-    rwm.aws_cmd(["s3", "rb", f"s3://{test_bucket}"])
+    trwm.aws_cmd(["s3", "rb", f"s3://{test_bucket}"])
     assert test_bucket not in buckets_plain_list(s3.list_buckets())
 
 
 def test_rclone_cmd(tmpworkdir: str, motoserver: str):  # pylint: disable=unused-argument
     """test rclone command"""
 
-    rwm = RWM({
+    trwm = RWM({
         "RWM_S3_ENDPOINT_URL": motoserver,
         "RWM_S3_ACCESS_KEY": "dummy",
         "RWM_S3_SECRET_KEY": "dummy",
@@ -84,8 +85,8 @@ def test_rclone_cmd(tmpworkdir: str, motoserver: str):  # pylint: disable=unused
     test_file = "testfile.txt"
     Path(test_file).write_text('1234', encoding='utf-8')
 
-    rwm.rclone_cmd(["mkdir", f"rwmbe:/{test_bucket}/"])
-    rwm.rclone_cmd(["copy", test_file, f"rwmbe:/{test_bucket}/"])
+    trwm.rclone_cmd(["mkdir", f"rwmbe:/{test_bucket}/"])
+    trwm.rclone_cmd(["copy", test_file, f"rwmbe:/{test_bucket}/"])
     assert test_bucket in buckets_plain_list(s3.list_buckets())
     assert test_file in objects_plain_list(s3.list_objects_v2(Bucket=test_bucket))
 
@@ -93,7 +94,7 @@ def test_rclone_cmd(tmpworkdir: str, motoserver: str):  # pylint: disable=unused
 def test_rclone_crypt_cmd(tmpworkdir: str, motoserver: str):  # pylint: disable=unused-argument
     """test rclone with crypt overlay"""
 
-    rwm = RWM({
+    trwm = RWM({
         "RWM_S3_ENDPOINT_URL": motoserver,
         "RWM_S3_ACCESS_KEY": "dummy",
         "RWM_S3_SECRET_KEY": "dummy",
@@ -106,51 +107,33 @@ def test_rclone_crypt_cmd(tmpworkdir: str, motoserver: str):  # pylint: disable=
     test_file = "testfile.txt"
     Path(test_file).write_text('1234', encoding='utf-8')
 
-    rwm.rclone_crypt_cmd(["copy", test_file, f"rwmbe:/{test_bucket}/"])
-    assert len(objects_plain_list(s3.list_objects_v2(Bucket=rwm.config["RWM_RCLONE_CRYPT_BUCKET"]))) == 1
+    trwm.rclone_crypt_cmd(["copy", test_file, f"rwmbe:/{test_bucket}/"])
+    assert len(objects_plain_list(s3.list_objects_v2(Bucket=trwm.config["RWM_RCLONE_CRYPT_BUCKET"]))) == 1
 
-    rwm.rclone_crypt_cmd(["delete", f"rwmbe:/{test_bucket}/{test_file}"])
-    assert s3.list_objects_v2(Bucket=rwm.config["RWM_RCLONE_CRYPT_BUCKET"])["KeyCount"] == 0
+    trwm.rclone_crypt_cmd(["delete", f"rwmbe:/{test_bucket}/{test_file}"])
+    assert s3.list_objects_v2(Bucket=trwm.config["RWM_RCLONE_CRYPT_BUCKET"])["KeyCount"] == 0
 
     test_file1 = "testfile1.txt"
     Path(test_file1).write_text('4321', encoding='utf-8')
-    rwm.rclone_crypt_cmd(["sync", ".", f"rwmbe:/{test_bucket}/"])
-    assert s3.list_objects_v2(Bucket=rwm.config["RWM_RCLONE_CRYPT_BUCKET"])["KeyCount"] == 2
+    trwm.rclone_crypt_cmd(["sync", ".", f"rwmbe:/{test_bucket}/"])
+    assert s3.list_objects_v2(Bucket=trwm.config["RWM_RCLONE_CRYPT_BUCKET"])["KeyCount"] == 2
 
     Path(test_file1).unlink()
-    rwm.rclone_crypt_cmd(["sync", ".", f"rwmbe:/{test_bucket}/"])
-    assert s3.list_objects_v2(Bucket=rwm.config["RWM_RCLONE_CRYPT_BUCKET"])["KeyCount"] == 1
-
-
-# def test_restic_cmd(tmpworkdir: str, motoserver: str):  # pylint: disable=unused-argument
-#    """test rclone with crypt overlay"""
-#
-#    rwm_conf = {
-#        "S3_ENDPOINT_URL": motoserver,
-#        "S3_ACCESS_KEY": "dummy",
-#        "S3_SECRET_KEY": "dummy",
-#        "RES_BUCKET": "restic_test",
-#        "RES_PASSWORD": "dummydummydummydummydummydummydummydummy",
-#    }
-#    s3 = boto3.client('s3', endpoint_url=motoserver, aws_access_key_id="dummy", aws_secret_access_key="dummy")
-#
-#    test_bucket = "testbucket"
-#    test_file = "testfile.txt"
-#    Path(test_file).write_text('1234', encoding='utf-8')
-#
-#    rwm_main(["res", "init"], rwm_conf)
-#    assert len(objects_plain_list(s3.list_objects_v2(Bucket=rwm_conf["RES_BUCKET"]))) == 1
-
-
-#
-#    rwm_main(["rcc", "delete", f"rwmbe:/{test_bucket}/{test_file}"], rwm_conf)
-#    assert s3.list_objects_v2(Bucket=rwm_conf["RCC_CRYPT_BUCKET"])["KeyCount"] == 0
-#
-#    test_file1 = "testfile1.txt"
-#    Path(test_file1).write_text('4321', encoding='utf-8')
-#    rwm_main(["rcc", "sync", ".", f"rwmbe:/{test_bucket}/"], rwm_conf)
-#    assert s3.list_objects_v2(Bucket=rwm_conf["RCC_CRYPT_BUCKET"])["KeyCount"] == 2
-#
-#    Path(test_file1).unlink()
-#    rwm_main(["rcc", "sync", ".", f"rwmbe:/{test_bucket}/"], rwm_conf)
-#    assert s3.list_objects_v2(Bucket=rwm_conf["RCC_CRYPT_BUCKET"])["KeyCount"] == 1
+    trwm.rclone_crypt_cmd(["sync", ".", f"rwmbe:/{test_bucket}/"])
+    assert s3.list_objects_v2(Bucket=trwm.config["RWM_RCLONE_CRYPT_BUCKET"])["KeyCount"] == 1
+
+
+def test_restic_cmd(tmpworkdir: str, motoserver: str):  # pylint: disable=unused-argument
+    """test restic command"""
+
+    trwm = RWM({
+        "RWM_S3_ENDPOINT_URL": motoserver,
+        "RWM_S3_ACCESS_KEY": "dummy",
+        "RWM_S3_SECRET_KEY": "dummy",
+        "RWM_RESTIC_BUCKET": "restictest",
+        "RWM_RESTIC_PASSWORD": "dummydummydummydummydummydummydummydummy",
+    })
+
+    assert trwm.restic_cmd(["init"]).returncode == 0
+    proc = trwm.restic_cmd(["cat", "config"])
+    assert "id" in json.loads(proc.stdout)