 			$dom.html(o.content)
 		if o.mix
 			$dom.addClass($$.mixClass(o.mix))
+		if o.data
+			currentData = $dom.data($$.bemDataKey) || {}
+			currentData[item_name] = o.data
+			$dom.data($$.bemDataKey, currentData)
 		if o.elements
 			for e_name, e_o of o.elements
 				$$.makeElement($dom, b_name, e_name, e_o)
-			
+		$dom
+	
+	makeDom: (o, klass) ->
+		o ||= {}
+		tag = o.tag || 'div'
+		$("<#{tag}>)").addClass(klass)
+
 	makeElement: ($parent, b_name, e_name, o) ->
-		tag = o.tag || 'div'
-		$e = $("<#{tag} class='#{b_name}__#{e_name}'>")
-		$$.processOptions($e, b_name, o)
+		item_name = $$.elementClass(b_name, e_name)
+		$e = @makeDom(o, item_name)
+		$$.processOptions($e, item_name, b_name, o)
 		if o.prepend
 			$parent.prepend $e
 		else

		$e
			
	makeBlock: (b_name, o) ->
		o ||= {}
		tag = o.tag || 'div'
		$b = $("<#{tag} class='#{b_name}'>")
		$$.processOptions($b, b_name, o)
		$b
		
	init: ($context) ->

	elementModClass: (b_name, e_name,  mod, value) ->
		"#{$$.elementClass(b_name,  e_name)}--#{$$.makeMod(mod,  value)}"

	blockClass: (b_name) ->
		b_name

	elementClass: (b_name, e_name) ->
		"#{b_name}__#{e_name}"