--- a/trunk/wharfie/wharfie.py
+++ b/trunk/wharfie/wharfie.py
@@ -90,7 +90,7 @@
 from lib import makefile as make
 from lib import actions
 
-regexCommand = '^[ \t]*(RUN HOST|RUN|FROM|TOOLCHAIN|TO|ADD|SOURCE|LICENSE|ENV)([^\n]*)';
+regexCommand = '^[ \t]*(RUN HOST|RUN|FROM|TOOLCHAIN|TO|ADD|SOURCE|LICENSE|ENV|[a-zA-Z0-9]+)([^\n]*)';
 g_depend = '';
 
 #
@@ -147,53 +147,25 @@
 
         # SOURCE
         elif cmd[0] == 'SOURCE':
-            myTrgCmd = 'mkdir /sources; cd /sources; [ ! -f .pkg.list ] && dpkg-query -f \'${binary:Package}\\n\' -W > .pkg.list; apt-get install -y dpkg-dev; cat .pkg.list | xargs -n 1 apt-get source'
-            myHostCmd = 'tar -cf ../' + cmd[1].lstrip() + ' sources;'
-            makeTarget = {
-                'comment' : "%s %s" % (cmd[0], cmd[1]),
-                'name': bld,
-                'dep': dep,
-                'trgcmd': myTrgCmd,
-                'hostcmd': myHostCmd,
-                'temporary': True
-                };
+            makeTarget=actions.source(bld, dep, cmd)
             make.makeTargets.append(makeTarget);
             g_depend = '';
 
         # LICENSE
         elif cmd[0] == 'LICENSE':
-            myTrgCmd = 'mkdir /licenses; for i in /usr/share/doc/*/; do [ -f $i/copyright ] && cp $i/copyright licenses/$(basename $i).txt || echo $(basename $i) >> licenses/___MISSING___.txt; done'
-            myHostCmd = 'tar -cf ../' + cmd[1].lstrip() + ' licenses;'
-            makeTarget = {
-                'comment' : "%s %s" % (cmd[0], cmd[1]),
-                'name': bld,
-                'dep': dep,
-                'trgcmd': myTrgCmd,
-                'hostcmd': myHostCmd,
-                'temporary': True
-                };
+            makeTarget=actions.license(bld, dep, cmd)
             make.makeTargets.append(makeTarget);
             g_depend = '';
 
         # TOOLCHAIN
         elif cmd[0] == 'TOOLCHAIN':
-            myTrgCmd = 'apt-get install -y libc6-dev; [ -d ./usr/lib/arm-linux-gnueabi*/ ] && (cd ./usr/lib/arm-linux-gnueabi*/; ln -s crt1.o crt0.o)'
-            myHostCmd = 'rm .hst.sh; mkdir target; mv ./* target; mkdir host; (cd host; tar -xf ../../debian_toolchain.tar); cp ../debian_toolchain_env.sh env.sh; tar -cf ../' + cmd[1].lstrip() + ' .;'
-            dep.append('debian_toolchain.tar')
-            dep.append('debian_toolchain_env.sh')
-            makeTarget = {
-                'comment' : "%s %s" % (cmd[0], cmd[1]),
-                'name': bld,
-                'dep': dep,
-                'trgcmd': myTrgCmd,
-                'hostcmd': myHostCmd,
-                'temporary': True
-                };
+            makeTarget=actions.toolchain(bld, dep, cmd)
             make.makeTargets.append(makeTarget);
             g_depend = '';
 
         else:
-            print ('unknown command: ' + cmd[0] + ' ' + cmd[1]);
+            print ('error: unknown command: "%s %s"' % (cmd[0], cmd[1]));
+            exit(-1);
 
     make.finalTarget.append(bld);