(defprotocol Printable 
  (print-it [this] "Prints out the Printable."))

(deftype Point [x y]
  Printable
  (print-it [this] (println (str "Point: " x " " y))))

(defn create-point 
  "Redundant constructor function."
  [x y] (Point. x y))

(deftype Circle [x y r]
  Printable
  (print-it [this] (println (str "Circle: " x " " y " " r))))

(defn create-circle 
  "Redundant consturctor function."
  [x y r] (Circle. x y r))