         # capitalizes the first letter
         # this implementation is done before deep optimization research (#2)
         _camelize: (str) ->
-            return str.replace(Moon.fn._rdashAlpha, Moon.fn._camelizeReplaceCallback)
-
-        # RegExp to match the dash and the char after it
-        _rdashAlpha: "/-([\D])/g"
+            return str.replace(/-([\D])/g, Moon.fn._camelizeReplaceCallback)
 
         # _camelize replace callback function to return
         # just the capitalized char
         _camelizeReplaceCallback: ($1) ->
             return $1.charAt(1).toUpperCase()            
 
+        # returns the prefix of a css style in "javascript" style. Used mainly for css3
+        _getCssPrefix: (prop) ->
+
+            # check if Moon already tried to get this prefix
+            if Moon.fn._cssPrefixes[prop]?
+                return Moon.fn._cssPrefixes[prop]
+
+            # camelCase properties to compare with style
+            propCam = Moon.fn._camelize(prop)
+
+            # is the property avaiable without prefix?
+            if document.documentElement.style[propCam]?
+                Moon.fn._cssPrefixes[prop] = prop
+                return prop
+
+            # if not, try to find the prefix
+            for pre in Moon.fn._vendorPrefixes
+                property = "-" + pre + prop
+                propertyCam = Moon.fn._camelize(pre + prop)
+                if document.documentElement.style[propertyCam]?
+                    Moon.fn._cssPrefixes[prop] = property
+                    return property
+
         # defines an animation step. Moon animations
         # must have at least one step
         animate: (args) ->
             animationProps =
-                duration: Moon.config.duration
-                delay: Moon.config.delay
-                easing: Moon.config.easing
-                before: Moon.config.before
-                after: Moon.config.after
+                duration: Moon.fn.config.duration
+                delay: Moon.fn.config.delay
+                easing: Moon.fn.config.easing
+                before: Moon.fn.config.before
+                after: Moon.fn.config.after
 
             for arg, value of args
                 animationProps[arg] = value

                    el.style[this._getPrefix(key)] = value

        pause: ->
            for el in this._collection
                el.style[this._getPrefix("transition")] = null
                for key, prop of this._stack[this._step]
                    if key == "duration" || key == "delay" || key == "easing" || key == "before" || key == "after"
                        continue
                    el.style[this._getPrefix(key)] = window.getComputedStyle(el, null).getPropertyValue(key)

        # set loop
        loop: (looping) ->


        # already returned prefixes
        _prefixes: {}
        _cssPrefixes: {}

        # default vendor prefixes
        _vendorPrefixes: ["webkit-", "moz-", "ms-", "O-"]

        # returns the collection of HTMLCollection or NodeList, that can be animated by Moon later
        _getMoonCollection: (target) ->
