 					item = model.getItem itemId
 					"<elli x='#{item.x[0]}' y='#{item.y[0]}' width='#{item.w[0]}' height='#{item.h[0]}' />"
 					
-				rootSVGElement: "elli"
+				rootSVGElement: ["elli"]
 				
 				extractFromSVG: (svg) ->
-					
+					info = {}
+					info.w = parseFloat svg.getAttribute('width')
+					info.h = parseFloat svg.getAttribute('height')
+					info.x = parseFloat svg.getAttribute('x')
+					info.y = parseFloat svg.getAttribute('y')
+					info
 				#
 				# Rendering Lens for the Ellipse SVG shape
 				#

					item = model.getItem itemId
					"<rect x='#{item.x[0]}' y='#{item.y[0]}' width='#{item.w[0]}' height='#{item.h[0]}' />"

				rootSVGElement: "rect"
				
				extractFromSVG: (svg) ->
				
				#
				# Renders the rectangular constraint on the video target.

		# * data - Object housing the data for application
		#
	
		NS = 
			OA: "http://www.w3.org/ns/openannotation/core"
			OAX: "http://www.w3.org/ns/openannotation/extensions"
			RDF: "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
			CNT: "http://www.w3.org/2008/content#"
			DC: "http://purl.org/dc/elements/1.1/"
		
		parseNPT = (npt) ->
			if npt.indexOf(':') == -1
				seconds = parseFloat npt
				minutes = 0
				hours = 0
			else
				bits = ((parseFloat b) for b in npt.split(':'))
				seconds = bits.pop()
				if bits.length > 0
					minutes = bits.pop()
				else
					minutes = 0
				if bits.length > 0
					hours = bits.pop()
				else
					hours = 0
			(hours * 60 + minutes) * 60 + seconds
		 
		app.importData = (data) ->
			# ingest data and put it into dataStore
			tempstore = []
			for i, o of data
				# Singling out the Annotations from the rest of the RDF data so
				# we can work down from just the Annotation object and its pointers
				if "#{NS.OA}Annotation" in (t.value for t in o["#{NS.RDF}type"])
					temp = 
						id: i
						type: "Annotation"
						bodyContent: ''
						bodyType: 'Text'
						targetURI: app.options.url
					# Logic chain to determine what kind of incoming annotation we're dealing with
					# 
					# Only interested in annotations that match our Video URI: are 'about' the video OR
					# that do not yet have targets
					if o["#{NS.OA}hasBody"]? and o["#{NS.OA}hasBody"][0]? and data[o["#{NS.OA}hasBody"][0].value]?
						temp.bodyContent = data[o["#{NS.OA}hasBody"][0].value]["#{NS.CNT}chars"][0].value
					if o["#{NS.OA}hasTarget"]?
						for hasTarget in (v.value for v in o["#{NS.OA}hasTarget"])
							if data[hasTarget]? and data[hasTarget]["#{NS.OA}hasSource"]?
								refd = (app.options.url in (s.value for s in data[hasTarget]["#{NS.OA}hasSource"]))
								if refd
									# Target source matches the URI of our video; generate an OAC dataStore model 
									# to insert into canvas for this annotation series in the JSON:RDF data
						
									# Unique ID comes from the URI value of type

									#
									# Check to see if target is a CompositeSelector Resource
									# Right now, we don't care about things that are not Compound Resources made
									# up of a time fragment and an SVG Constraint
									#								
									for hasSelector in (v.value for v in data[hasTarget]["#{NS.OA}hasSelector"])
										refd = ("#{NS.OAX}CompositeSelector" in (t.value for t in data[hasSelector]["#{NS.RDF}type"]))
										if data[hasSelector]? and refd
											for hasSubSelector in (v.value for v in data[hasSelector]["#{NS.OA}hasSelector"])
												if data[hasSubSelector]?
													types = (t.value for t in data[hasSubSelector]["#{NS.RDF}type"])
													if "#{NS.OAX}SvgSelector" in types
														# extract SVG stuff
														if data[hasSubSelector]["#{NS.CNT}chars"]? and data[hasSubSelector]["#{NS.CNT}chars"][0]?
															svg = data[hasSubSelector]["#{NS.CNT}chars"][0].value
															dom = $.parseXML svg
															# based on the root element, we interogate the shape info to see
															# which one wants to handle extracting the extents/etc. from the svg
															if dom?
																doc = dom.documentElement
																rootName = doc.nodeName
																for t, info of shapeTypes
																	if info.extractFromSVG? and rootName in info.rootSVGElement
																		shapeInfo = info.extractFromSVG doc
																		if shapeInfo?
																			$.extend(temp, shapeInfo)
																			temp.shapeType = t
															
													if "#{NS.OA}FragSelector" in types
														# extract media fragment stuff
														if data[hasSubSelector]["#{NS.RDF}value"]? and data[hasSubSelector]["#{NS.RDF}value"][0]?
															fragment = data[hasSubSelector]["#{NS.RDF}value"][0].value
															fragment = fragment.replace(/^t=npt:/, '')
															bits = fragment.split(',')
															temp.npt_start = parseNPT bits[0]
															temp.npt_end   = parseNPT bits[1]	
					else
						#  No Target is created yet - create blank item to insert into dataStore
						# Unique ID comes from the URI value of type
