diff --git a/png2uri b/png2uri
index d14ffdc..0c23983 100755
--- a/png2uri
+++ b/png2uri
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# png2uri version 1.0.4, July 6, 2012.
+# png2uri version 1.0.5, July 7, 2012.
 #
 # NO COPYRIGHT RIGHTS ARE CLAIMED TO THIS SOFTWARE.
 #
@@ -18,7 +18,8 @@
 #     file.  None of the people below claim any rights with regard to the
 #     contents of this file.
 #
-#     Glenn Randers-Pehrson <glennrp@users.sourceforge.net>
+#     Glenn Randers-Pehrson <glennrp at users.sourceforge.net> is the author.
+#     John Bowler <jbower at acm.org> contributed some useful suggestions.
 #
 # png2uri is a command-line application that creates an HTML "img" tag on
 # standard output containing a data URI in accordance with RFC-2397, from
@@ -27,7 +28,7 @@
 # "--format" option or, if that option was not supplied, by inspection of the
 # filename extension.
 #
-# Usage: png2uri [-f type|--format type] [-u|--uri_only] [file]
+# Usage: png2uri [-f type|--format type] [-u|--uri_only] [infile [outfile]]
 #
 #        options: -f|--format TYPE: 
 #                 write "image/TYPE" instead of "image/png" in the
@@ -42,24 +43,18 @@
 #
 # Requires /bin/sh and a "base64" or "uuencode -m" that encodes its input
 # in base64 according to RFC-3548 and writes the result on standard output,
-# "uname", and a working "sed".
+# and a working "sed".
 #
 # If you prefer a web-based converter or a java application, this isn't
 # it. Use your search engine and look for "data uri" to find one.
 #
-# I guess we need a "configure" script to figure out which of base64(1)
-# or uuencode(1) to use, since neither is always present (uuencode must
-# be installed as part of "sharutils" on Gnu/Linux platforms, which often
-# hasn't happened). Here is a minimal "configure":
+# This script figures out which of base64(1) or uuencode(1) to use, since
+# neither is always present (uuencode must be installed as part of "sharutils"
+# on Gnu/Linux platforms, which often hasn't happened).
 
-case X`uname` in
-  XLinux)
-    PNG2URI_BASE64=use_base64
-    ;;
-  *)
-    PNG2URI_BASE64=use_uuencode
-    ;;
-esac
+png2uri_encode(){
+base64 2>/dev/null || uuencode -m "====" 2>/dev/null | grep -v "===="
+}
 
 PNG2URI_FMT="unknown"
 PNG2URI_URI="true"
@@ -110,26 +105,12 @@
       case X$PNG2URI_URI in
         Xfalse)
           echo "data:$PNG2URI_FMT;base64,"
-          case X$PNG2URI_BASE64 in
-            Xuse_base64)
-              base64
-              ;;
-            Xuse_uuencode)
-              uuencode -m ==== | grep -v ====
-              ;;
-          esac
+          png2uri_encode
           ;;
 
         *)
           echo "<img alt=\"PNG\" title=\"PNG\" src=\"data:$PNG2URI_FMT;base64,"
-          case X$PNG2URI_BASE64 in
-            Xuse_base64)
-              base64
-              ;;
-            Xuse_uuencode)
-              uuencode -m ==== | grep -v ====
-              ;;
-          esac
+          png2uri_encode
           echo "\">"
           ;;
       esac
@@ -138,12 +119,28 @@
 
   *)
       # Convert the named file.
+
+      # First make sure there weren't extra arguments
+      case $# in
+        1)
+          :  # OK, continue
+          ;;
+        2)
+          exec < "$1" > "$2"
+          ;;
+        *)
+          echo "png2uri: too many arguments: $*" >&2
+          echo "usage: png2uri [options] [infile [outfile]" >&2
+          exit 1
+          ;;
+      esac
+
       case X$PNG2URI_FMT in
         Xunknown)
           PNG2URI_FMT=image/png
-          extension=`echo $1 | sed "s/.*\.//"`
+          png2uri_extension=`echo $1 | sed "s/.*\.//"`
 
-          case X$extension in
+          case X$png2uri_extension in
               Xjpeg|XJPEG|Xjpg|XJPG)
                 PNG2URI_FMT=image/jpeg
                 ;;
@@ -162,25 +159,11 @@
       case X$PNG2URI_URI in
         Xfalse)
             echo "data:$PNG2URI_FMT;base64,"
-            case X$PNG2URI_BASE64 in
-              Xuse_base64)
-                base64 < $1
-                ;;
-              Xuse_uuencode)
-                uuencode -m $1 ==== | grep -v ====
-                ;;
-            esac
+            png2uri_encode < "$1"
             ;;
         *)
             echo "<img alt=\"$1\" title=\"$1\" src=\"data:$PNG2URI_FMT;base64,"
-            case X$PNG2URI_BASE64 in
-              Xuse_base64)
-                base64 < $1
-                ;;
-              Xuse_uuencode)
-                uuencode -m $1 ==== | grep -v ====
-                ;;
-            esac
+            png2uri_encode < "$1"
             echo "\">"
             ;;
       esac
diff --git a/png2uri-README.txt b/png2uri-README.txt
index c91d7c0..9e846a6 100644
--- a/png2uri-README.txt
+++ b/png2uri-README.txt
@@ -25,7 +25,7 @@
  or "--format" option or, if that option was not supplied, by inspection of
  the filename extension.
 
- Usage: png2uri [-f format|--format format] [-u|--uri_only] [file]
+ Usage: png2uri [-f format|--format format] [-u|--uri_only] [infile [outfile]]
 
         options: -f|--format TYPE: 
                  write "image/TYPE" instead of "image/png" in the
@@ -112,48 +112,25 @@
       of "sharutils", which often doesnn't happen.  SunOS and FreeBSD don't
       supply "base64" so we use "uuencode" instead.
 
+   Version 1.0.5, July 7, 2012:
+
+      Eliminated use of "uname" and use the return of "base64" and "uuencode"
+      to select the workable one (checking "base64" first); suggested by
+      John Bowler.  Added a check for too many arguments, also a JB suggestion.
+      Accept output filename as an optional final argument.
+
  TO DO
 
  1. Test on various other platforms. I assume we'll soon find one that has
     neither "uuencode" nor "base64".  The following have been tried
 
-    Ubuntu 10.04 (uuencode output was folded to 60 characters)
-       Linux glenn.rp 2.6.32-41-generic #91-Ubuntu SMP Wed Jun 13 11:43:55
-          UTC 2012 x86_64 GNU/Linux
-       Linux nancy.rp 2.6.32-41-generic #91-Ubuntu SMP Wed Jun 13 11:43:55
-          UTC 2012 x86_64 GNU/Linux (uuencode not found.  Fixed that with
-          "sudo aptitude install sharutils", then finally fixed by using
-          base64() instead of uuencode())
-
-    Ubuntu 12.04 (uuencode not found but manpage for POSIX uuencode exists;
-       base64 works)
-       Linux scooby 3.0.0-22-generic #36-Ubuntu SMP Tue Jun 12 17:37:42 UTC 2012
-          x86_64 x86_64 x86_64 GNU/Linux
-
-    SunOS 5.10 (uuencode data is folded to 68 characters)
-       Does not work with "base64"!  Reconfigured png2uri to use "uuencode".
-       on non-Linux platforms.
-       SunOS freddy 5.10 Generic_147441-13 i86pc i386 i86pc
-       SunOS blade 5.10 Generic_144488-12 sun4u sparc SUNW,Sun-Blade-2500
-
-    Sunos 5.11 (uuencode data is folded to 68 characters)
-       SunOS weerd 5.11 oi_151a4 i86pc i386 i86pc
-
-    FreeBSD 8.0 (uuencode data is folded to 76 characters)
-       "base64 not found"; use uuencode.
-       FreeBSD shaggy.simplesystems.org 8.0-RELEASE-p1 FreeBSD 8.0-RELEASE-p1
-           #1: Mon Dec 21 11:26:14 CST 2009
-           zsh@shaggy.simplesystems.org:/usr/src/sys/i386/compile/GENERIC
-           i386
-
-    Red Hat? (uuencode not found but manpage for POSIX uuencode
-    exists; worked when base64 was used instead of uuencode)
-       Linux studio.imagemagick.org 2.6.18-308.4.1.el5xen #1 SMP Tue Apr 17
-           17:49:15 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux
-       Linux magick.imagemagick.org 3.4.4-3.fc17.x86_64 #1 SMP Tue Jun 26
-           20:54:56 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
-       Two other Redhat Enterprise platforms also worked with base64, but
-           uuencode was not installed.
+    Ubuntu 10.04 (using "base64")
+    Ubuntu 12.04 (using "base64")
+    SunOS 5.10   (using "uuencode")
+    SunOS 5.11   (using "uuencode")
+    FreeBSD 8.0  (using "uuencode")
+    Redhat Gnu/Linux (using "base64")
+    Redhat Enterprise (using "base64")
 
  2. Find out if the script works on Windows and Mac or can be modified to
  do so.
