diff --git a/fsl/wrappers/bet.py b/fsl/wrappers/bet.py
index ab72ea9ca9315235d0aba5bf8a91f0ac415b3666..93f1e9ed8375081871ce917d250cd8ca5729d77e 100644
--- a/fsl/wrappers/bet.py
+++ b/fsl/wrappers/bet.py
@@ -16,10 +16,8 @@ from . import wrapperutils  as wutils
 
 @wutils.fileOrImage('input', 'output')
 def bet(input, output, **kwargs):
-    """Delete non-brain tissue from an image of the whole head.
+    """Wrapper for the ``bet`` command.
 
-    :arg input:         Image to be brain-extracted
-    :arg output:        Output image
     :arg mask:          Generate a brain mask
     :arg seg:           If ``False``, a brain extracted image is not
                         generated.
@@ -45,7 +43,7 @@ def bet(input, output, **kwargs):
     }
 
     cmd  = ['bet', input, output]
-    cmd += wutils.applyArgStyle('-', argmap, valmap, **kwargs)
+    cmd += wutils.applyArgStyle('-', argmap=argmap, valmap=valmap, **kwargs)
 
     return run.runfsl(*cmd)
 
diff --git a/fsl/wrappers/flirt.py b/fsl/wrappers/flirt.py
index f637affb6860694a5cdb6c556d7daae7472123dd..b571aa3d6eeb010a050625c2ff37b12abbe2b5f1 100644
--- a/fsl/wrappers/flirt.py
+++ b/fsl/wrappers/flirt.py
@@ -28,7 +28,7 @@ from . import wrapperutils  as wutils
 @wutils.fileOrImage('src', 'ref', 'out', 'wmseg', 'fieldmap', 'fieldmapmask')
 @wutils.fileOrArray('init', 'omat', 'wmcoords', 'wmnorms')
 def flirt(src, ref, **kwargs):
-    """Wrapper around the ``flirt`` command. """
+    """Wrapper for the ``flirt`` command. """
 
     asrt.assertIsNifti(src, ref)
 
@@ -43,8 +43,6 @@ def flirt(src, ref, **kwargs):
         'noresampblur' : wutils.SHOW_IF_TRUE,
         '2D'           : wutils.SHOW_IF_TRUE,
         'v'            : wutils.SHOW_IF_TRUE,
-        'version'      : wutils.SHOW_IF_TRUE,
-        'help'         : wutils.SHOW_IF_TRUE,
     }
 
     cmd  = ['flirt', '-in', src, '-ref', ref]
@@ -93,7 +91,7 @@ def concatxfm(inmat1, inmat2, outmat):
 @wutils.fileOrImage('infile', 'out', 'reffile')
 @wutils.fileOrArray('init')
 def mcflirt(infile, **kwargs):
-    """Wrapper around the ``mcflirt`` command."""
+    """Wrapper for the ``mcflirt`` command."""
 
     asrt.assertIsNifti(infile)
 
diff --git a/fsl/wrappers/fnirt.py b/fsl/wrappers/fnirt.py
index 17c42b036eb181b3d4df7f8daf98641055dd94b7..3abcd51c97e11f88abcf59fd605f76a3638ef5d1 100644
--- a/fsl/wrappers/fnirt.py
+++ b/fsl/wrappers/fnirt.py
@@ -19,182 +19,90 @@ non-linear registration of 3D images.
 """
 
 
-import os.path as op
-import            glob
-
-
 import fsl.utils.run        as run
 import fsl.utils.assertions as asrt
+from . import wrapperutils  as wutils
+
 
+@wutils.fileOrImage('src', 'ref', 'inwarp', 'cout', 'iout', 'fout', 'jout',
+                    'refout', 'refmask', 'inmask')
+@wutils.fileOrArray('aff')
+def fnirt(src, ref, **kwargs):
+    """Wrapper for the ``fnirt`` command."""
 
-def fnirt(src, ref, aff=None, imprefm=None, impinm=None, applyrefmask=None,
-          applyinmask=None, subsamp=None, miter=None, infwhm=None,
-          reffwhm=None, lmbda=None, estint=None, warpres=None, ssqlambda=None,
-          regmod=None, intmod=None, intorder=None, biasres=None,
-          biaslambda=None, refderiv=None, cout=None, intout=None, refout=None,
-          iout=None, interp=None, inwarp=None, minmet=None, verbose=False,
-          intin=None, jout=None):
-    """Do nonlinear image registration."""
-    cmd = 'fnirt --in={0} --ref={1}'.format(src, ref)
-
-    if aff is not None:
-        cmd += " --aff={0}".format(aff)
-    if imprefm is not None:
-        cmd += " --imprefm={0}".format(imprefm)
-    if impinm is not None:
-        cmd += " --impinm={0}".format(impinm)
-    if applyrefmask is not None:
-        cmd += " --applyrefmask={0}".format(applyrefmask)
-    if applyinmask is not None:
-        cmd += " --applyinmask={0}".format(applyinmask)
-    if subsamp is not None:
-        cmd += " --subsamp={0}".format(subsamp)
-    if miter is not None:
-        cmd += " --miter={0}".format(miter)
-    if infwhm is not None:
-        cmd += " --infwhm={0}".format(infwhm)
-    if reffwhm is not None:
-        cmd += " --reffwhm={0}".format(reffwhm)
-    if lmbda is not None:
-        cmd += " --lambda={0}".format(lmbda)
-    if estint is not None:
-        cmd += " --estint={0}".format(estint)
-    if warpres is not None:
-        cmd += " --warpres={0}".format(warpres)
-    if ssqlambda is not None:
-        cmd += " --ssqlambda={0}".format(ssqlambda)
-    if regmod is not None:
-        cmd += " --regmod={0}".format(regmod)
-    if intmod is not None:
-        cmd += " --intmod={0}".format(intmod)
-    if intorder is not None:
-        cmd += " --intorder={0}".format(intorder)
-    if biasres is not None:
-        cmd += " --biasres={0}".format(biasres)
-    if biaslambda is not None:
-        cmd += " --biaslambda={0}".format(biaslambda)
-    if refderiv is not None:
-        cmd += " --refderiv={0}".format(refderiv)
-    if cout is not None:
-        cmd += " --cout={0}".format(cout)
-    if intout is not None:
-        cmd += " --intout={0}".format(intout)
-    if refout is not None:
-        cmd += " --refout={0}".format(refout)
-    if iout is not None:
-        cmd += " --iout={0}".format(iout)
-    if interp is not None:
-        cmd += " --interp={0}".format(interp)
-    if inwarp is not None:
-        cmd += " --inwarp={0}".format(inwarp)
-    if minmet is not None:
-        cmd += " --minmet={0}".format(minmet)
-    if intin is not None:
-        cmd += " --intin={0}".format(intin)
-    if jout is not None:
-        cmd += " --jout={0}".format(jout)
-    if verbose:
-        cmd += " --verbose"
+    asrt.assertIsNifti(src, ref)
+
+    cmd  = ['fnirt', '--in={}'.format(src), '--ref={}'.format(ref)]
+    cmd += wutils.applyArgStyle('--=', **kwargs)
 
     return run.runfsl(cmd)
 
 
-def applywarp(src, ref, out, warp=None, premat=None, prematdir=None,
-              postmat=None, postmatdir=None, interp="spline",
-              paddingsize=None, abs=False, rel=False):
-    """Tool for applying FSL warps.
-
-    The ``prematdir`` and ``postmatdir`` arguments can be used when warping a
-    4D image. You can specify a directory containing multiple affines, named
-    ``MAT_????`` (as output by e.g. ``mcflirt``). Each file will be applied to
-    one volume (in order) of the image.
-    """
-    assert (warp or premat or postmat or prematdir or postmatdir), \
-        "either a warp or mat (premat, postmat or prematdir) must be supplied"
-    assert not (premat and prematdir), \
-        "cannot use premat and prematdir arguments together"
-    assert not (postmat and postmatdir), \
-        "cannot use postmat and postmatdir arguments together"
-
-    def catmats(matdir, out):
-        """Concatenate FSL trasformations files into a single file."""
-        mats = sorted(glob.glob(op.join(matdir, "MAT_????")))
-        with open(out, 'w') as outfile:
-            for fname in mats:
-                with open(fname) as infile:
-                    outfile.write(infile.read())
-
-    cmd = "--in={0} --ref={1} --out={2} --interp={3}".format(src, ref, out,
-                                                             interp)
-    cmd = "applywarp " + cmd
-
-    if prematdir:
-        premat = op.join(prematdir, 'allmats.txt')
-        catmats(prematdir, premat)
-    if postmatdir:
-        postmat = op.join(postmatdir, 'allmats.txt')
-        catmats(postmatdir, postmat)
-    if warp:
-        cmd += " --warp={0}".format(warp)
-    if premat:
-        cmd += " --premat={0}".format(premat)
-    if postmat:
-        cmd += " --postmat={0}".format(postmat)
-    if paddingsize:
-        cmd += " --paddingsize={0}".format(paddingsize)
-    if abs:
-        cmd += " --abs"
-    if rel:
-        cmd += " --rel"
+@wutils.fileOrImage('src', 'ref', 'out', 'warp', 'mask')
+@wutils.fileOrArray('premat', 'postmat')
+def applywarp(src, ref, out, warp, **kwargs):
+    """Wrapper for the ``applywarp`` command. """
+
+    valmap = {
+        'abs'     : wutils.SHOW_IF_TRUE,
+        'rel'     : wutils.SHOW_IF_TRUE,
+        'super'   : wutils.SHOW_IF_TRUE,
+        'debug'   : wutils.SHOW_IF_TRUE,
+        'verbose' : wutils.SHOW_IF_TRUE,
+    }
+
+    cmd = ['applywarp',
+           '--in={}'.format(src),
+           '--ref={}'.format(ref),
+           '--out={}'.format(out),
+           '--warp={}'.format(warp)]
+
+    cmd += wutils.applyArgStyle('--=', valmap=valmap, **kwargs)
 
     return run.runfsl(cmd)
 
 
-def invwarp(inwarp, ref, outwarp):
-    """Tool for inverting FSL warps."""
+@wutils.fileOrImage('warp', 'ref', 'out')
+def invwarp(warp, ref, out, **kwargs):
+    """Wrapper for the ``invwarp`` command."""
+
+    valmap = {
+        'abs'          : wutils.SHOW_IF_TRUE,
+        'rel'          : wutils.SHOW_IF_TRUE,
+        'noconstraint' : wutils.SHOW_IF_TRUE,
+        'debug'        : wutils.SHOW_IF_TRUE,
+        'verbose'      : wutils.SHOW_IF_TRUE,
+    }
+
+    asrt.assertIsNifti(warp, ref, out)
 
-    asrt.assertFileExists(inwarp, ref)
-    asrt.assertIsNifti(inwarp, ref, outwarp)
+    cmd  = ['invwarp',
+            '--warp={}'.format(warp),
+            '--ref={}'.format(ref),
+            '--out={}'.format(out)]
 
-    cmd  = 'invwarp'
-    cmd += ' --warp={}'.format(inwarp)
-    cmd += ' --out={}'.format(outwarp)
-    cmd += ' --ref={}'.format(ref)
+    cmd += wutils.applyArgStyle('--=', valmap=valmap, **kwargs)
 
     return run.runfsl(cmd)
 
 
-def convertwarp(out, ref, warp1=None, warp2=None, premat=None, midmat=None,
-                postmat=None, shiftmap=None, shiftdir=None, absout=False,
-                abs=False, rel=False, relout=False):
-    """Tool for converting FSL warps."""
-
-    assert (warp1 or warp2 or premat or midmat or postmat), \
-        "either a warp (warp1 or warp2) or mat (premat, midmat, or " + \
-        "postmat) must be supplied"
-
-    cmd = "convertwarp --ref={0} --out={1}".format(ref, out)
-    if warp1:
-        cmd = cmd + " --warp1={0}".format(warp1)
-    if warp2:
-        cmd = cmd + " --warp2={0}".format(warp2)
-    if premat:
-        cmd = cmd + " --premat={0}".format(premat)
-    if midmat:
-        cmd = cmd + " --midmat={0}".format(midmat)
-    if postmat:
-        cmd = cmd + " --postmat={0}".format(postmat)
-    if shiftmap:
-        cmd = cmd + " --shiftmap={0}".format(shiftmap)
-    if shiftdir:
-        cmd = cmd + " --shiftdir={0}".format(shiftdir)
-    if absout:
-        cmd = cmd + " --absout"
-    if relout:
-        cmd = cmd + " --relout"
-    if abs:
-        cmd = cmd + " --abs"
-    if rel:
-        cmd = cmd + " --rel"
+@wutils.fileOrImage('out', 'ref', 'warp1', 'warp2', 'shiftmap')
+@wutils.fileOrArray('premat', 'midmat', 'postmat')
+def convertwarp(out, ref, **kwargs):
+    """Wrapper for the ``convertwarp`` command."""
+
+    valmap = {
+        'abs'        : wutils.SHOW_IF_TRUE,
+        'rel'        : wutils.SHOW_IF_TRUE,
+        'absout'     : wutils.SHOW_IF_TRUE,
+        'relout'     : wutils.SHOW_IF_TRUE,
+        'jacobian'   : wutils.SHOW_IF_TRUE,
+        'jstats'     : wutils.SHOW_IF_TRUE,
+        'constrainj' : wutils.SHOW_IF_TRUE,
+        'verbose'    : wutils.SHOW_IF_TRUE,
+    }
+
+    cmd  = ['convertwarp', '--ref={}'.format(ref), '--out={}'.format(out)]
+    cmd += wutils.applyArgStyle('--=', valmap=valmap, **kwargs)
 
     return run.runfsl(cmd)