 		@updateDomFromOutlet(name)
 		@
 
-	appendTo: (el) ->
-		@el.appendTo(el.el or el) # Okay?
-		@
-
-	insertBefore: (el) ->
-		@el.insertBefore(el.el or el) # Okay?
-		@
-		
-	insertAfter: (el) ->
-		@el.insertAfter(el.el or el) # Okay?
-		@
+	appendTo: (view) ->
+		(view.el or view).appendChild(@el)
+		@
+
+	insertBefore: (view) ->
+		el = view.el or view
+		el.parentNode.insertBefore(@el, el)
+		@
+		
+	insertAfter: (view) ->
+		@insertBefore((view.el or view).nextSibling)
+		@
+		
+	retract: ->
+		parentNode = @el.parentNode
+		nextSibling = @el.nextSibling
+		@el.parentNode.removeChild(@el)
+		
+		return ->
+			if nextSibling
+				parentNode.insertBefore(@el, nextSibling)
+			else
+				parentNode.appendChild(@el)
 		
 	remove: ->
-		@el.remove()
-		@
-
-	addClass: (classes) ->
-		@el.addClass(classes)
-		@
-
-	removeClass: (classes) ->
-		@el.removeClass(classes)
-		@
+		@el.parentNode.removeChild(@el)
+		@
+
+	addClass: (names...) ->
+		@el.classList.add.apply(@el.classList, names)
+		@
+
+	removeClass: (names...) ->
+		@el.classList.remove.apply(@el.classList, names)
+		@
+	
+	toggleClass: (name, addOrRemove) ->
+		@el.classList.toggle(name, addOrRemove)
+			
+	hasClass: (name) ->
+		@el.classList.contains(name)
 
 	enable: (recursive = true, updateClass = true)->
 		@enabled = true

					outlet.set(view.el, value)
			input:
				get: (outlet, view) ->
					if outlet.el.attr('type') is 'checkbox'
						outlet.el.prop('checked')
					else
						outlet.el.val()
				set: (outlet, view, value) ->
					if outlet.el.attr('type') is 'checkbox'
						outlet.el.prop('checked', value)
					else
						outlet.el.val(value)
			img:
				get: (outlet, view) ->
					outlet.el.attr('src')
				set: (outlet, view, value) ->
					outlet.el.attr('src', value)
			html:
				get: (outlet, view) ->
					outlet.el.html()
				set: (outlet, view, value) ->
					outlet.el.html(value)
		
		@outletTypes.default = @outletTypes.html
		@outletTypes.textarea = @outletTypes.input

		super(@options)

	initialize: () ->
		@hidden = @el.classList.contains('hidden')
		@enabled = !@el.classList.contains('disabled')
		
		@initializeViews()
		
