fixes for encode for the action form of pycompose
diff --git a/action/__main__.py b/action/__main__.py
index f1d9a9b..a75de50 100755
--- a/action/__main__.py
+++ b/action/__main__.py
@@ -17,19 +17,42 @@
 import composer
 import json
 
+from composer import deserialize
+
 #
 # this is the main method for running the pycomposer as an OpenWhisk action
 #
 def compose(args):
-    if args['source'] is None:
-        raise Exception('Please provide a source parameter')
+    if 'source' not in args and 'composition' not in args:
+        raise Exception('Please provide a source or composition parameter')
 
-    composition = eval(args['source'])
-    print(args['source'])
+    if 'composition' in args:
+        print('accepting composition as input')
+        print(args['composition'])
+        composition = deserialize(args['composition'])
+    else:
+        print(args['source'])
+        composition = eval(args['source'])
 
-    if args['lower'] is not None:
+    if 'lower' in args:
         res = composer.lower(composition, args['lower'])
         print(str(res))
         return json.loads(str(res))
     else:
-        return { "code": composer.encode(composer.composition('anonymous', composition), lower)['actions'][-1]['action']['exec']['code'] }
+        if 'name' in args:
+            name = 'anonymous'
+        else:
+            name = args['name']
+
+        compat = args['encode']
+
+        comp = composer.encode(composer.composition(name, composition), compat)
+        comp['composition'] = json.loads(str(composer.lower(comp['composition'], compat)))
+
+        print('success in encode')
+        print(comp)
+        print(str(comp))
+
+        return comp
+#        return { "code": composer.encode(composer.composition(name, composition), args['encode'])['actions'][-1]['action']['exec']['code'] }
+