diff --git a/pre_commit_hooks/check_case_conflict.py b/pre_commit_hooks/check_case_conflict.py
index 6a837d9..dd4ad86 100644
--- a/pre_commit_hooks/check_case_conflict.py
+++ b/pre_commit_hooks/check_case_conflict.py
@@ -4,9 +4,8 @@
 
 import argparse
 
-from plumbum import local
-
 from pre_commit_hooks.util import added_files
+from pre_commit_hooks.util import cmd_output
 
 
 def lower_set(iterable):
@@ -14,7 +13,7 @@
 
 
 def find_conflicting_filenames(filenames):
-    repo_files = set(local['git']('ls-files').splitlines())
+    repo_files = set(cmd_output('git', 'ls-files').splitlines())
     relevant_files = set(filenames) | added_files()
     repo_files -= relevant_files
     retv = 0
diff --git a/pre_commit_hooks/trailing_whitespace_fixer.py b/pre_commit_hooks/trailing_whitespace_fixer.py
index 7ac3d73..0642ac0 100644
--- a/pre_commit_hooks/trailing_whitespace_fixer.py
+++ b/pre_commit_hooks/trailing_whitespace_fixer.py
@@ -4,7 +4,7 @@
 import fileinput
 import sys
 
-from plumbum import local
+from pre_commit_hooks.util import cmd_output
 
 
 def _fix_file(filename):
@@ -17,9 +17,9 @@
     parser.add_argument('filenames', nargs='*', help='Filenames to fix')
     args = parser.parse_args(argv)
 
-    bad_whitespace_files = local['grep'][
-        ('-l', '[[:space:]]$') + tuple(args.filenames)
-    ](retcode=None).strip().splitlines()
+    bad_whitespace_files = cmd_output(
+        'grep', '-l', '[[:space:]]$', *args.filenames, retcode=None
+    ).strip().splitlines()
 
     if bad_whitespace_files:
         for bad_whitespace_file in bad_whitespace_files:
diff --git a/pre_commit_hooks/util.py b/pre_commit_hooks/util.py
index eedf7b6..7c2175e 100644
--- a/pre_commit_hooks/util.py
+++ b/pre_commit_hooks/util.py
@@ -2,10 +2,26 @@
 from __future__ import print_function
 from __future__ import unicode_literals
 
-from plumbum import local
+import subprocess
+
+
+class CalledProcessError(RuntimeError):
+    pass
 
 
 def added_files():
-    return set(local['git'](
-        'diff', '--staged', '--name-only', '--diff-filter', 'A',
+    return set(cmd_output(
+        'git', 'diff', '--staged', '--name-only', '--diff-filter', 'A',
     ).splitlines())
+
+
+def cmd_output(*cmd, **kwargs):
+    retcode = kwargs.pop('retcode', 0)
+    popen_kwargs = {'stdout': subprocess.PIPE, 'stderr': subprocess.PIPE}
+    popen_kwargs.update(kwargs)
+    proc = subprocess.Popen(cmd, **popen_kwargs)
+    stdout, stderr = proc.communicate()
+    stdout, stderr = stdout.decode('UTF-8'), stderr.decode('UTF-8')
+    if retcode is not None and proc.returncode != retcode:
+        raise CalledProcessError(cmd, retcode, proc.returncode, stdout, stderr)
+    return stdout
