       when 'ArrayExpression'
         "[#{c.elements.map(walk).join ', '}]"
       when 'ObjectExpression'
-        rv = 'jsdict({'
+        rv = 'jsdict({\n'
         for prop in c.properties
-          rv += "\"#{prop.key.name ? prop.key.value}\": (#{walk prop.value}), "
+          rv += "\"#{prop.key.name ? prop.key.value}\": #{walk prop.value},\n"
         rv += '})'
       when 'Literal'
         if c.value is null

        p.addLine "return #{if c.argument isnt null then walk c.argument else ''}"
      when 'ExpressionStatement'
        ex = walk c.expression
        if ex then p.addLine "#{ex}"
      when 'CallExpression', 'NewExpression'
        "#{walk c.callee}(#{c.arguments.map(walk).join ', '})"
      when 'ThrowStatement'

        p.indent--
      when 'FunctionDeclaration'
        p.addLine "def #{c.id.name}(#{c.params.map((p) -> (walk p) + '=None').join ', '}):"
        globals = Object.keys c.globalVars
        if globals.length > 0
          p.indent++
          p.addLine "global #{globals.join ", "}"
          p.indent--
        walk c.body
        p.addLine ''
      when 'IfStatement'
