diff --git a/udd/blends_metadata_gatherer.py b/udd/blends_metadata_gatherer.py
index d77f200..a092c09 100644
--- a/udd/blends_metadata_gatherer.py
+++ b/udd/blends_metadata_gatherer.py
@@ -35,6 +35,7 @@ class blends_metadata_gatherer(gatherer):
     self.assert_my_config('table-metadata')
     self.assert_my_config('table-tasks')
     self.assert_my_config('table-dependencies')
+    self.assert_my_config('table-alternatives')
 
     self.log = logging.getLogger(self.__class__.__name__)
     if debug==1:
@@ -65,6 +66,18 @@ class blends_metadata_gatherer(gatherer):
       except InternalError, err:
         self.log.error("INTEGRITY: %s (%s)" % (query, err))
 
+  def inject_package_alternatives(self, blend, task, deps):
+    if deps in self.list_of_package_alternatives:
+      self.log.info("Blend %s task %s: Packages alternatives %s is mentioned more than once" % (blend, task, deps))
+    else:
+      query = "EXECUTE blend_inject_package_alternatives (%s, %s, %s)"  % (quote(blend), quote(task), quote(deps))
+      try:
+        self.cur.execute(query)
+        self.list_of_package_alternatives.append(deps)
+      except IntegrityError, err:
+        self.log.error("%s (%s)" % (query, err))
+      except InternalError, err:
+        self.log.error("INTEGRITY: %s (%s)" % (query, err))
 
   def handle_dep_line(self, blend, task, strength, dependencies):
     # Hack: Debian Edu tasks files are using '\' at EOL which is broken
@@ -75,6 +88,10 @@ class blends_metadata_gatherer(gatherer):
     # Remove versions from versioned depends
     deps = re.sub(' *\([ ><=\.0-9]+\) *', '', deps)
 
+    #append alternatives relation into blends_dependencies_alternatives
+    if '|' in deps:
+      self.inject_package_alternatives(blend, task, deps.strip())
+
     # turn alternatives ('|') into real depends for this purpose
     # because we are finally interested in all alternatives
     depslist = deps.replace('|',',').split(',')
@@ -119,6 +136,7 @@ class blends_metadata_gatherer(gatherer):
     self.cur = self.cursor()
 
     self.cur.execute("DELETE FROM %s" % (my_config['table-dependencies']))
+    self.cur.execute("DELETE FROM %s" % (my_config['table-alternatives']))
     self.cur.execute("DELETE FROM %s" % (my_config['table-tasks']))
     self.cur.execute("DELETE FROM %s" % (my_config['table-metadata']))
     query = """PREPARE blend_metadata_insert AS INSERT INTO %s (blend, blendname, projecturl, tasksprefix,
@@ -150,6 +168,11 @@ class blends_metadata_gatherer(gatherer):
                  VALUES ($1, $2, $3, $4, $5, $6)""" % (my_config['table-dependencies'])
     self.cur.execute(query)
 
+    query = """PREPARE blend_inject_package_alternatives AS
+                 INSERT INTO %s  (blend, task, alternatives)
+                 VALUES ($1, $2, $3)""" % (my_config['table-alternatives'])
+    self.cur.execute(query)
+
     query = """PREPARE blend_check_ubuntu_package AS
                  SELECT DISTINCT package, component, regexp_replace(release, '-.*$', '') as release FROM ubuntu_packages
                  WHERE package = $1
@@ -234,6 +257,7 @@ class blends_metadata_gatherer(gatherer):
         except:
           self.log.error("error reading %s" % taskfile)
         self.list_of_deps_in_task = []
+        self.list_of_package_alternatives = []
         # read task metadata
         if f:
           ictrl = deb822.Deb822.iter_paragraphs(f)
@@ -302,6 +326,8 @@ class blends_metadata_gatherer(gatherer):
             self.handle_dep_line(meta['blend'], t, 'suggests', dep['suggests'])
           if dep.has_key('ignore'):
             self.handle_dep_line(meta['blend'], t, 'ignore', dep['ignore'])
+          if dep.has_key('avoid'):
+            self.handle_dep_line(meta['blend'], t, 'avoid', dep['avoid'])
           try:
             dep = ictrl.next()
           except:
