 
         # returns the prefix of a css style in "javascript" style. Used mainly for css3
         getPrefix: (prop) ->
+
+            # check if Moon already tried to get this prefix
+            if Moon.fn._prefixes[prop]?
+                return Moon.fn._prefixes[prop]
+
+            # if not, continue the search for it
             prefixes = ["webkit", "moz", "ms", "O"]
+
             indexOfDash = prop.indexOf("-")
             while indexOfDash > -1
+
                 # the letter after the dash is capitalized
                 prop = prop.slice(0, indexOfDash) + prop.charAt(indexOfDash + 1).toUpperCase() + prop.slice(indexOfDash + 2)
                 indexOfDash = prop.indexOf("-")
 
+            # is the propertie avaiable without prefix?
             if document.documentElement.style[prop]?
+                Moon.fn._prefixes[prop] = prop
                 return prop
 
+            # if not, try to find the prefix
+            propCap = Moon.fn.cap(prop)
             for pre in prefixes
-                propertie = pre + Moon.fn.cap(prop)
+                propertie = pre + propCap
                 if document.documentElement.style[propertie]?
+                    Moon.fn._prefixes[prop] = propertie
                     return propertie
-            
 
         # capitalizes the first letter
         cap: (str) ->


        # defines an animation step. Moon animations must have at least one step
        animate: (args) ->
            self = this
            animationProps =
                duration: 0
                delay: 0

do (window, document) ->
    # Main object of MoonJS
    Moon = (target, args) ->
        # this function acts like a 'enhanced' init
        if window == this
            return new Moon(target, args)

        # Moon collection
        this._collection = Moon.fn.getMoonCollection(target)

        # Moon variables to control animation
        this._callback = undefined
        this._stack = []
        this._step = -1
        this._prefixes = {}

        return this

    Moon.fn = Moon.prototype =
        _prefixes: {}
        # returns the collection of HTMLCollection or NodeList, that can be animated by Moon later
        getMoonCollection: (target) ->
            collection = []
