 					mainItem: new Renderer[id]
 					ids: {}
 			else
-				id = id.slice 'styles:'.length
-				@scope = styles[id]?.withStructure()
+				match = /^styles:(.+?)(?:\:(.+?))?$/.exec id
+				[_, id, subid] = match
+				@scope = styles[id]?.withStructure(subid)
 			@isAutoParent = true
 			if @scope
 				@item = @scope.mainItem

					log.warn "Style file `#{id}` can't be find"
				return
		else
			while parent and not scope = parent.scope
				parent = parent.parent


			parent = @parent
			loop
				scope = parent?.scope or windowStyle
				@item = scope.ids[id] or scope.mainItem.$?[id]
				@item ?= scope.styles(id)
				if @item or scope is windowStyle
					break
				parent = parent.parent

			unless @item
				unless File.Input.test id

			name = attrListeners.pop()
			obj = attrListeners.pop()
			obj[name].disconnect func

		# restore classes
		if (classes = @item._classes) or @classes
			classes.clear()
			if @classes
				for name in @classes
					classes.append name
		return

	updateText: ->
