 		expect(val).toBe.any Scope
 		utils.defProp @, 'scope', 'e', val
 
-	signal.createHandler @::, 'ready'
+	readyLazySignal = signal.createLazy @::, 'ready'
+
+	readyLazySignal.onInitialized (item) ->
+		setImmediate => @ready()
+
+	onLazySignalInitialized = (item, signalName) ->
+		Impl.attachItemSignal item._uid, signalName, item[signalName]
 
 	for signalName in Item.SIGNALS
-		signal.createHandler @::, signalName
+		lazySignal = signal.createLazy @::, signalName
+		lazySignal.onInitialized onLazySignalInitialized
 
 	utils.defProp @::, 'parent', 'e', ->
 		items[Impl.getItemParent @_uid]

	@SIGNALS = ['pointerClicked', 'pointerPressed', 'pointerReleased',
	            'pointerEntered', 'pointerExited', 'pointerWheel', 'pointerMove']

	Binding = require './item/binding'
	Anchors = require './item/anchors'
	Animations = require('./item/animations') Scope

		# animations
		@animations.initialize()

		Object.seal @

	createBindedSetter = (propName, setFunc) ->
		(val) ->
			if typeof val is 'string'
				# TODO: optimize it
				setImmediate =>
					binding = new Binding @, val
					Impl.setItemBinding @_uid, propName, binding
