        (split-temporals :SingleDateTime)
        (map cmn/map->TemporalExtentType)))
 
-(defn expected-iso-19115-2
-  [iso-coll]
-  (update-in iso-coll [:TemporalExtent] expected-iso-19115-2-temporal))
+(defmethod convert-internal :iso19115
+  [umm-coll _]
+  (update-in umm-coll [:TemporalExtent] expected-iso-19115-2-temporal))
 
-;;; Conversion Lookup By Format
+(defmethod convert-internal :iso-smap
+  [umm-coll _]
+  (convert-internal umm-coll :iso19115))
 
-(def ^:private formats->expected-conversion-fns
-  "A map of metadata formats to expected conversion functions"
-  {:echo10   expected-echo10
-   :iso19115 expected-iso-19115-2
-   :iso-smap expected-iso-19115-2
-   :dif      expected-dif})
+;;; Unimplemented Fields
+
+(def not-implemented-fields
+  "This is a list of required but not implemented fields."
+  #{:DataLineage :MetadataStandard :Platform :ProcessingLevel :RelatedUrl
+    :ResponsibleOrganization :ScienceKeyword :SpatialExtent})
+
+(defn- dissoc-not-implemented-fields
+  "Removes not implemented fields since they can't be used for comparison"
+  [record]
+  (reduce (fn [r field]
+            (assoc r field nil))
+          record
+          not-implemented-fields))
 
 ;;; Public API
 
 (defn convert
-  "Returns input-record transformed according to the specified
-  transformation for metadata-format."
-  [input-record metadata-format]
-  (let [f (get formats->expected-conversion-fns
-               metadata-format
-               identity)]
-    (dissoc-not-implemented-fields (f input-record))))
+  "Returns input UMM-C record transformed according to the specified transformation for
+  metadata-format."
+  [umm-coll metadata-format]
+  (dissoc-not-implemented-fields (convert-internal umm-coll metadata-format)))

  writing it to an XML format and parsing it back. Conversion from a UMM record into metadata
  can be lossy if some fields are not supported by that format"
  (:require [cmr.umm-spec.models.common :as cmn]))

;;; Utililty Functions


       ;; Then make sure we get the right record type out.
       (map cmn/map->TemporalExtentType)))

(defmethod convert-internal :dif
  [umm-coll _]
  (update-in umm-coll [:TemporalExtent] dif-temporal))

;; ISO 19115-2
