do ()->
	currentID = 0
	arrayMutatorMethods = ['push','pop','shift','unshift','splice','reverse','sort']
	dummyPropertyDescriptor = {}
	boundInstances = {}
	placeholder = ['{{', '}}']
	settings = Object.create
		silent:					false
	,
		placeholder:
			get: ()-> placeholder
			set: (newPlaceholder)-> if checkIf.isArray(newPlaceholder) and newPlaceholder.length is 2
				placeholder = newPlaceholder
				setPholderRegEx()
				return
	

	defaultOptions = 
		delay:					false
		throttle:				false
		simpleSelector:			false
		promiseTransforms:		false
		dispatchEvents:			false
		sendArrayCopies:		false
		updateEvenIfSame:		false
		updateOnBind:			true

	import misc/helpers.coffee
	import misc/errorsAndWarnings.coffee
	import SimplyBind/
	import Binding/
	import BindingInterface/
	import GroupBinding/

	if module?.exports?
		module.exports = SimplyBind
	else if typeof define is 'function' and define.amd
		define ['simplybind'], ()-> SimplyBind
	else
		@SimplyBind = SimplyBind
	# import [browserOnly] export/window.coffee
	# import [nodeOnly] export/module.coffee