   [n]
   (PApplet/abs (float n)))
 
-(def ^{:arglists (:arglists (meta #'abs-float))
-       :doc (:doc (meta #'abs-float))}
-  abs abs-float)
+(defn abs
+  "Calculates the absolute value (magnitude) of a number. The
+  absolute value of a number is always positive. Dynamically casts to
+  an int or float appropriately"
+    [n]
+    (if (int-like? n)
+      (abs-int n)
+      (abs-float n)))
 
 (defn acos
   "The inverse of cos, returns the arc cosine of a value. This
   function expects the values in the range of -1 to 1 and values are
   returned in the range 0 to Math/PI (3.1415927)."
   [n]
-  (PApplet/acos n))
+  (PApplet/acos (float n)))
 
 (defn alpha
   "Extracts the alpha value from a color."
   [color] (.alpha *applet* (int color)))
 
-(defn ambient
+(defn ambient-float
   "Sets the ambient reflectance for shapes drawn to the screen. This
   is combined with the ambient light component of environment. The
   color components set through the parameters define the

  [rgb]
  (.ambient
   *applet* (int rgb)))

(defn ambient-light
  "Adds an ambient light. Ambient light doesn't come from a specific direction,

  [amt low high]
  (PApplet/constrain (int amt) (int low) (int high)))

(defn constrain
  "Constrains a value to not exceed a maximum and minimum value."
  [amt low high]
  (if (int-like? amt)
    (constrain-int amt low high)
    (constrain-float amt low high)))

(defn copy
  "Copies a region of pixels from the display window to another area
