Fixes for previous commit.
diff --git a/trace_event.py b/trace_event.py
index 731616f..7ec0c1f 100644
--- a/trace_event.py
+++ b/trace_event.py
@@ -73,10 +73,11 @@
     trace_event_impl.trace_flush()
 
   def trace_begin(name, **kwargs):
-    trace_event_impl.add_trace_event("B", time.time(), "python", name, kwargs)
+    args_to_log = {key: repr(value) for key, value in kwargs.iteritems()}
+    trace_event_impl.add_trace_event("B", time.time(), "python", name, args_to_log)
 
-  def trace_end(name, **kwargs):
-    trace_event_impl.add_trace_event("E", time.time(), "python", name, kwargs)
+  def trace_end(name):
+    trace_event_impl.add_trace_event("E", time.time(), "python", name)
 
   def trace(name, **kwargs):
     return trace_event_impl.trace(name, **kwargs)
@@ -102,7 +103,7 @@
   def trace_begin(self, name, **kwargs):
     pass
 
-  def trace_end(self, name, **kwargs):
+  def trace_end(self, name):
     pass
 
   @contextlib.contextmanager
diff --git a/trace_event_impl/decorators.py b/trace_event_impl/decorators.py
index 40c269b..ccaf670 100644
--- a/trace_event_impl/decorators.py
+++ b/trace_event_impl/decorators.py
@@ -10,13 +10,15 @@
 
 @contextlib.contextmanager
 def trace(name, **kwargs):
+  category = "python"
   start = time.time()
-  log.add_trace_event("B", start, category, name, kwargs)
+  args_to_log = {key: repr(value) for key, value in kwargs.iteritems()}
+  log.add_trace_event("B", start, category, name, args_to_log)
   try:
     yield
   finally:
     end = time.time()
-    log.add_trace_event("E", end, category, name, kwargs)
+    log.add_trace_event("E", end, category, name)
 
 def traced(*args):
   def get_wrapper(func):
@@ -30,7 +32,8 @@
 
     def arg_spec_tuple(name):
       arg_index = arg_spec.args.index(name)
-      default_index = arg_index + len(arg_spec.defaults) - len(arg_spec.args)
+      defaults_length = len(arg_spec.defaults) if arg_spec.defaults else 0
+      default_index = arg_index + defaults_length - len(arg_spec.args)
       if default_index >= 0:
         default = arg_spec.defaults[default_index]
       else:
@@ -49,7 +52,7 @@
       def get_arg_value(name, index, default):
         if name in kwargs:
           return kwargs[name]
-        elif index and index < len(args):
+        elif index < len(args):
           return args[index]
         else:
           return default
@@ -70,7 +73,7 @@
         return func(*args, **kwargs)
       finally:
         end = time.time()
-        log.add_trace_event("E", end, category, name, arg_values)
+        log.add_trace_event("E", end, category, name)
     return traced_function
 
   no_decorator_arguments = len(args) == 1 and callable(args[0])