   (jl-apply [self arg]))
 
 (defrecord primitive [implementation]
-  JLObject
+  JLPrimitive
   (primitive? [self] true)
   Applicable
   (jl-apply [self arg] (implementation arg))

  (zero [self] self))

(defrecord closure [formal body env]
  JLObject
  (closure? [self] true)
  Applicable
  (jl-apply [self arg]

  (zero [self] (new pair (zero car) (zero cdr))))

(defrecord empty-list []
  JLEmptyList
  (empty-list? [self] true))

(extend-type Number
