diff --git a/src/main/java/com/aparapi/device/Device.java b/src/main/java/com/aparapi/device/Device.java
index f15835e6eb9a5452a5f2a22e73828048ba1a03d6..2e43c43c718958bf7359ad36fde02dbc3f7a358b 100644
--- a/src/main/java/com/aparapi/device/Device.java
+++ b/src/main/java/com/aparapi/device/Device.java
@@ -18,7 +18,7 @@ package com.aparapi.device;
 import com.aparapi.*;
 import com.aparapi.internal.kernel.*;
 
-public abstract class Device{
+public abstract class Device implements Comparable<Device> {
 
    public static enum TYPE {
       UNKNOWN(Integer.MAX_VALUE),
@@ -179,4 +179,20 @@ public abstract class Device{
    public int hashCode() {
       return Long.valueOf(getDeviceId()).hashCode();
    }
+   
+   public int compareTo(Device other) {
+	   if (type.rank < other.type.rank) {
+		   return -1;
+	   } else if (type.rank > other.type.rank) {
+		   return 1;
+	   }
+	   
+	   if (getDeviceId() < other.getDeviceId()) {
+		   return -1;
+	   } else if (getDeviceId() > other.getDeviceId()) {
+		   return 1;
+	   }
+	   
+	   return 0;
+   }
 }