<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -19,13 +19,7 @@ module SocialBeat
       @env = {}
       @artist_loader = CodeLoader.new(artist_file,
         :default_class =&gt; Artist,
-        :on_load  =&gt; L{|artist| 
-          begin
-            artist.setup_environment(@env) 
-          rescue NoMethodError =&gt; e
-            puts e
-          end
-        },
+        :on_load  =&gt; L{|artist| send_to_reloadable(artist, :setup_environment, @env) },
         :on_error =&gt; L{|e| puts &quot;Load error: #{e}&quot; }
       )
 
@@ -66,11 +60,7 @@ module SocialBeat
       # This loop forces a fixed physics update step, giving us deterministic behaviour 
       while @physics_accum &gt;= PHYSICS_STEP 
         e = @new_events.select {|x| x.timestamp &lt;= PHYSICS_STEP }
-        begin
-          @artist_loader.current_instance.update(e, @canvas, @env, PHYSICS_STEP)
-        rescue NoMethodError, ArgumentError, TypeError, NameError =&gt; exception
-          puts exception.inspect
-        end
+        send_to_reloadable(@artist_loader.current_instance, :update, e, @canvas, @env, PHYSICS_STEP)
         @new_events -= e
         @new_events.each do |event|
           event.timestamp -= PHYSICS_STEP
@@ -87,11 +77,14 @@ module SocialBeat
       u = now - (@last_draw_time || now) 
       @last_draw_time = now
 
-      # TODO: Catch all errors
+      send_to_reloadable(@artist_loader.current_instance, :draw, @canvas, @env, u)
+    end
+
+    def send_to_reloadable(obj, method, *args)
       begin
-        @artist_loader.current_instance.draw(@canvas, @env, u)
-      rescue ArgumentError, NoMethodError =&gt; e
-        puts e.inspect
+        obj.send(method, *args)
+      rescue NoMethodError, ArgumentError, TypeError, NameError =&gt; e
+        puts e
       end
     end
   end</diff>
      <filename>lib/socialbeat/runner.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>b3672500ec5d054a8291fcf9ee8aefcb6bd93612</id>
    </parent>
  </parents>
  <author>
    <name>Xavier Shay</name>
    <email>xavier@rhnh.net</email>
  </author>
  <url>http://github.com/xaviershay/socialbeat/commit/a9733f00092d46d2c1f81326e3793fcf7f84b61d</url>
  <id>a9733f00092d46d2c1f81326e3793fcf7f84b61d</id>
  <committed-date>2008-10-11T14:56:18-07:00</committed-date>
  <authored-date>2008-10-11T14:56:18-07:00</authored-date>
  <message>Route all calls to the artist through #send_to_reloadable, which catches runtime errors</message>
  <tree>8e22edcfaace7eb73170896b583182139bb49ab2</tree>
  <committer>
    <name>Xavier Shay</name>
    <email>xavier@rhnh.net</email>
  </committer>
</commit>
