      {:id \"ccw-plugin-my-other-id\", :persistent true, :parents [:problem]})"
   ([type-def] (register-marker-type! (b/bundle "ccw.core") type-def))
   ([bundle type-def]
-    (b/remove-extension! (str (.getSymbolicName bundle) "." (:id type-def)))
+    (b/remove-extension! (eclipse-type-id (:type-id type-def)))
     (let [ext-str (as-extension type-def)]
       (b/add-contribution!
-        (or (:name type-def) (:id type-def))
+        (or (:name type-def) (eclipse-type-id (:type-id type-def)))
         ext-str
         bundle
-        true ; we must force persistence, or markers disappear when Eclipse restarts
+        true ; we must force persistence, or markers disappear when Eclipse restarts because the extension would not be reused
         (b/master-token)))
     (reset-marker-types!)))
-

   :one      IResource/DEPTH_ONE
   :infinite IResource/DEPTH_INFINITE})

(defn create-marker!
  "Create a marker for the given resource-coercible.
   the marker map must contain keys :type, :severity, :message,

  "Transforms a map defining a type into a String representing a valid Eclipse
   xml extension."
  [type-def]
  (b/xml-map->extension 
    {:tag "extension"
     :attrs {:point "org.eclipse.core.resources.markers"
             :id (eclipse-type-id (:type-id type-def))
             :name (or (:name type-def) (eclipse-type-id (:type-id type-def)) "<unknown>")}
     :content (into []
                (concat
                  [{:tag "persistent"
