diff --git a/src/wavesurfer.js b/src/wavesurfer.js
index <HASH>..<HASH> 100644
--- a/src/wavesurfer.js
+++ b/src/wavesurfer.js
@@ -87,20 +87,38 @@ var WaveSurfer = {
     mark: function(options) {
         options = options || {};
 
+        var self = this;
         var timings = this.timings(0);
+        var id = options.id || '_m' + this.marks++;
 
         var marker = {
-            width: options.width,
-            color: options.color,
+            id: id,
             percentage: timings[0] / timings[1],
-            position: timings[0]
+            position: timings[0],
+
+            update: function(options) {
+                options = options || {};
+
+                this.color = options.color;
+                this.width = options.width;
+
+                if (self.backend.paused) {
+                    self.drawer.redraw();
+                    if (options.center) {
+                        self.drawer.recenter(this.percentage);
+                    }
+                }
+
+                return this;
+            }
         };
 
-        var id = options.id || '_m' + this.marks++;
+        return this.drawer.markers[id] = marker.update(options);
+    },
 
-        this.drawer.markers[id] = marker;
-        if (this.backend.paused) this.drawer.redraw();
-        return marker;
+    clearMarks: function() {
+        this.drawer.markers = {};
+        this.marks = 0;
     },
 
     timings: function(offset) {
Add method to clear markers and add an update method to markers.