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

		context: -> @
		lambda: (_) -> (-> _)
		pluck: (property) -> (obj) -> obj[property]
		invoke: (method) ->
			defaultArgs = Array::slice.call arguments, 1
			(obj) ->
				args = Array::slice.call arguments, 1
				obj[method].apply obj, (if args.length then args else defaultArgs)
		sequence: ->
			switch arguments.length



	# 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
