--- a/src/main/java/net/timbusproject/dpes/alternative/kb/Package.java
+++ b/src/main/java/net/timbusproject/dpes/alternative/kb/Package.java
@@ -20,14 +20,12 @@
 
 import java.io.Serializable;
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.LinkedList;
-import java.util.Map;
 
 /**
  * @author Rudolf Mayer
  */
-public class Package implements Serializable {
+public class Package extends VirtualPackage implements Serializable {
     private static final long serialVersionUID = 1L;
 
     public Package() {
@@ -38,19 +36,11 @@
         setName(name);
     }
 
-    private String name;
-
     private String suite;
 
     private String section;
 
-    private final LinkedList<PackageRelation> depends = new LinkedList<PackageRelation>();
-
-    private final LinkedList<PackageRelation> conflicts = new LinkedList<PackageRelation>();
-
-    private final LinkedList<PackageRelation> recommends = new LinkedList<PackageRelation>();
-
-    private final LinkedList<Package> provides = new LinkedList<Package>();
+    private final LinkedList<VirtualPackage> provides = new LinkedList<VirtualPackage>();
 
     private Boolean installed;
 
@@ -72,14 +62,6 @@
 
     private ArrayList<String> packageInformation;
 
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
     public String getSuite() {
         return suite;
     }
@@ -88,35 +70,11 @@
         this.suite = suite;
     }
 
-    public LinkedList<PackageRelation> getDepends() {
-        return this.depends;
-    }
-
-    public void setDepends(Collection<PackageRelation> arrayList) {
-        this.depends.addAll(arrayList);
-    }
-
-    public LinkedList<PackageRelation> getConflicts() {
-        return this.conflicts;
-    }
-
-    public void setConflicts(Collection<PackageRelation> conflicts) {
-        this.conflicts.addAll(conflicts);
-    }
-
-    public LinkedList<PackageRelation> getRecommends() {
-        return this.recommends;
-    }
-
-    public void setRecommends(Collection<PackageRelation> recommends) {
-        this.recommends.addAll(recommends);
-    }
-
-    public LinkedList<Package> getProvides() {
+    public LinkedList<VirtualPackage> getProvides() {
         return provides;
     }
 
-    public void setProvides(VersionedPackage provides) {
+    public void setProvides(VirtualPackage provides) {
         this.provides.add(provides);
     }
 
@@ -185,79 +143,24 @@
         this.conflictsString = conflictsString;
     }
 
+    public String getDependsString() {
+        return dependsString;
+    }
+
+    public String getRecommendsString() {
+        return recommendsString;
+    }
+
+    public String getConflictsString() {
+        return conflictsString;
+    }
+
     public String getVersionString() {
         return versionString;
     }
 
     public void setVersionString(String versionString) {
         this.versionString = versionString;
-    }
-
-    public void resolveLinks(Map<String, Package> packageNameMap) {
-        setDepends(parseDependencyPackages(dependsString, packageNameMap));
-        setRecommends(parseDependencyPackages(recommendsString, packageNameMap));
-        setConflicts(parseDependencyPackages(conflictsString, packageNameMap));
-    }
-
-    public ArrayList<PackageRelation> parseDependencyPackages(String pkgListString, Map<String, Package> packageNameMap) {
-        ArrayList<PackageRelation> pkgs = new ArrayList<PackageRelation>();
-        if (pkgListString != null) {
-            final String[] elements = pkgListString.split(",");
-            for (String pkg : elements) {
-                String packageRef = pkg.trim();
-
-                if (packageRef.contains("|")) {
-                    // System.out.println("\t\tIgnoring package: " + parsedPackageInfo.getName() + "; ref was: " + packageRef);
-                } else {
-                    PackageRelation parsedPackageInfo = parsePackageInfo(packageRef, packageNameMap);
-                    if (parsedPackageInfo != null) {
-                        if (parsedPackageInfo.getTargetPackageName() == null) {
-                            System.out.println("Got null package for ref: " + packageRef);
-                            parsedPackageInfo = parsePackageInfo(packageRef, packageNameMap);
-                        } else if (parsedPackageInfo.getTargetPackageName().contains("<")) {
-                            System.out.println("Not parsed correctly package : " + parsedPackageInfo.getTargetPackageName() + "; ref was: "
-                                    + packageRef);
-                            parsedPackageInfo = parsePackageInfo(packageRef, packageNameMap);
-                        }
-                        pkgs.add(parsedPackageInfo);
-                    }
-                }
-
-            }
-        }
-        return pkgs;
-    }
-
-    public PackageRelation parsePackageInfo(String packageRef, Map<String, Package> packageNameMap) {
-        if (packageRef.contains("(") && packageRef.contains(")")) { // assume a versioned package relation
-            String[] pkgParts = packageRef.split("\\(");
-            String targetPackageName = pkgParts[0].trim();
-
-            String pkgRelation = pkgParts[1].trim();
-            if (!pkgRelation.endsWith(")")) {
-                System.out.println("The package relation string details doesn't end with ) for " + pkgRelation);
-                return null;
-            }
-            pkgRelation = pkgRelation.substring(0, pkgRelation.length() - 1);
-            String[] pkgVersionDetailParts = pkgRelation.split(" ");
-
-            Package targetPackage = packageNameMap.get(targetPackageName);
-            if (targetPackage == null) {
-
-            }
-
-            PackageRelation packageRelation = new PackageRelation(targetPackageName);
-            packageRelation.setConstraint(pkgVersionDetailParts[0].trim());
-            packageRelation.setVersion(pkgVersionDetailParts[1].trim());
-            return packageRelation;
-        } else { // simple package relation
-            String targetPackageName = packageRef.trim();
-            Package targetPackage = packageNameMap.get(targetPackageName);
-            if (targetPackage == null) {
-
-            }
-            return new PackageRelation(targetPackageName);
-        }
     }
 
     public void setPackageInformation(ArrayList<String> packageInformation) {