Fixes #56
diff --git a/composer.js b/composer.js
index 7b446a7..a20d7c6 100644
--- a/composer.js
+++ b/composer.js
@@ -318,7 +318,8 @@
      *   /ns/pkg/foo => /ns/pkg/foo
      */
     function parseActionName(name) {
-        if (typeof name !== 'string' || name.trim().length == 0) throw new ComposerError('Name is not specified')
+        if (typeof name !== 'string') throw new ComposerError('Name must be a string')
+        if (name.trim().length == 0) throw new ComposerError('Name is not valid')
         name = name.trim()
         let delimiter = '/'
         let parts = name.split(delimiter)
diff --git a/test/test.js b/test/test.js
index eed442f..9c64aab 100644
--- a/test/test.js
+++ b/test/test.js
@@ -33,8 +33,9 @@
 
             it('action name must parse to fully qualified', function () {
                 let combos = [
-                    { n: '', s: false, e: 'Name is not specified' },
-                    { n: ' ', s: false, e: 'Name is not specified' },
+                    { n: 42, s: false, e: 'Name must be a string' },
+                    { n: '', s: false, e: 'Name is not valid' },
+                    { n: ' ', s: false, e: 'Name is not valid' },
                     { n: '/', s: false, e: 'Name is not valid' },
                     { n: '//', s: false, e: 'Name is not valid' },
                     { n: '/a', s: false, e: 'Name is not valid' },