def _buildGolangPackageLevelGraph(self, dataset):
		# get nodes
		nodes = dataset.alphabet()
		# get edges from labels

		labels = dataset.labels()

		missing = []
		edges = []
		for category in labels:
			for edge in labels[category]:
				a, b = edge
				if b == "":
					missing = missing + list(set(map(lambda (a,b): b, labels[category][edge])))
				else:
					edges = edges + labels[category][edge]

		self._missing_packages = list(set(missing))

		# mixing all categories we can get repeating edges
		edges = list(set(edges))

		# convert edges to adjacent list
		edges = GraphUtils.edges2adjacentList(edges)

		# TODO(jchaloup): integrate parent mapping as well so one can join packages from the same rpm
		return Graph(nodes, edges)
	def _buildRpmLevelGraph(self, dataset):
		# get nodes and edges
		nodes = dataset.nodes()
		edges = dataset.edges()

		# get missing packages
		labels = dataset.labels()

		missing = []
		for category in labels:
			# TODO(jchaloup): make distinction among devel, main and tests
			for edge in labels[category]:
				a, b = edge
				if b == "":
					missing = missing + list(set(map(lambda (a,b): b, labels[category][edge])))

		self._missing_packages = list(set(missing))

		# convert edges to adjacent list
		edges = GraphUtils.edges2adjacentList(edges)

		return Graph(nodes, edges)