 
 
 	# class methods
-	Function.extend {
+	Function.extend
 		_: (_) ->
 			caller = arguments.callee.caller or arguments.caller
 			return unless caller?

					# argument given during this call, else use the predefiend argument
					collectedArgs.push (if !arg? or arg is Function._ then passedArgs.shift() else arg)
				original.apply @, collectedArgs.concat(passedArgs)
		curry: ->
			curriedArgs = Array::slice.call arguments
			@wrap (original,passedArgs) ->
				original.apply @, curriedArgs.concat(passedArgs)
		rcurry: ->
			curriedArgs = Array::slice.call arguments
			@wrap (original,passedArgs) ->
				original.apply @, passedArgs.concat(curriedArgs)
		not: ->



	# instance methods
	Function.implement
		toFunction: -> @
		bind: (scope, args...) ->
			self = @curry args
			-> self.apply scope, arguments
		wrap: (fn,bind) ->
			self = @
			wrapper = (args...) ->
				fn.call @, (if bind? then self.bind bind else self), args
			wrapper._origin = @
			wrapper
