diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/compute/domain/EC2HardwareBuilder.java b/apis/ec2/src/main/java/org/jclouds/ec2/compute/domain/EC2HardwareBuilder.java
index 7d1a56c..d5adcc2 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/compute/domain/EC2HardwareBuilder.java
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/compute/domain/EC2HardwareBuilder.java
@@ -290,6 +290,19 @@
       virtualizationTypes(VirtualizationType.HVM, VirtualizationType.PARAVIRTUAL);
       return this;
    }
+   
+   private EC2HardwareBuilder x1() {
+	      virtualizationTypes(VirtualizationType.HVM);
+	      
+	      // TODO X1 is not deprecated, but it requires that you are using a VPC
+	      // until we have a way for hardware instances to be filtered based on network
+	      // we do NOT want X1 selected automatically.
+	      // You get: org.jclouds.aws.AWSResponseException: request POST https://ec2.eu-west-1.amazonaws.com/ HTTP/1.1 failed with code 400, error: AWSError{requestId='2300b99e-ddc0-42ab-b1ed-9d628a161be4', requestToken='null', code='VPCResourceNotSpecified', message='The specified instance type can only be used in a VPC. A subnet ID or network interface ID is required to carry out the request.', context='{Response=, Errors=}'}
+	      // A user can explicitly request a x1 if they are also setting up a VPC.
+	      deprecated();
+	      
+	      return this;
+   }
 
    // TODO below this line are previous generation, discouraged
    // http://aws.amazon.com/ec2/previous-generation/
@@ -1211,6 +1224,31 @@
             .processors(ImmutableList.of(new Processor(64.0, 2.3)));
    }
 
+   /**
+    * @see InstanceType#X1_16XLARGE
+    */
+   public static EC2HardwareBuilder x1_16xlarge() {
+      return new EC2HardwareBuilder(InstanceType.X1_16XLARGE).x1()
+            .ram(999424)
+            .volumes(ImmutableList.<Volume> of(
+                    new VolumeBuilder().type(LOCAL).size(10.0f).device("/dev/sda1").bootDevice(true).durable(false).build(),
+                    new VolumeBuilder().type(LOCAL).size(1920.0f).device("/dev/sdb").bootDevice(false).durable(false).build()))
+            .processors(ImmutableList.of(new Processor(64.0, 2.3)));
+   }
+
+   /**
+    * @see InstanceType#X1_32XLARGE
+    */
+   public static EC2HardwareBuilder x1_32xlarge() {
+      return new EC2HardwareBuilder(InstanceType.X1_32XLARGE).x1()
+            .ram(1998848)
+            .volumes(ImmutableList.<Volume> of(
+                    new VolumeBuilder().type(LOCAL).size(10.0f).device("/dev/sda1").bootDevice(true).durable(false).build(),
+                    new VolumeBuilder().type(LOCAL).size(1920.0f).device("/dev/sdb").bootDevice(false).durable(false).build(),
+                    new VolumeBuilder().type(LOCAL).size(1920.0f).device("/dev/sdc").bootDevice(false).durable(false).build()))
+            .processors(ImmutableList.of(new Processor(128.0, 2.3)));
+   }
+   
    @SuppressWarnings("unchecked")
    @Override
    public Hardware build() {
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/domain/InstanceType.java b/apis/ec2/src/main/java/org/jclouds/ec2/domain/InstanceType.java
index 617cc39..2faf2a4 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/domain/InstanceType.java
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/domain/InstanceType.java
@@ -842,4 +842,30 @@
     * </ul>
     */
    public static final String R4_16XLARGE = "r4.16xlarge";
+   
+   /**
+    * X1 16x Large-scale, enterprise-class and in-memory applications
+    * <ul>
+    * <li>976 GB memory</li>
+    * <li>64 vCPU</li>
+    * <li>Intel Xeon E7-8880 v3 (Haswell) processors</li>
+    * <li>1 SSD-based volume with 1920 GiB of instance storage</li>
+    * <li>64-bit platform</li>
+    * <li>Network Performance: 25 Gigabit</li>
+    * </ul>
+    */
+   public static final String X1_16XLARGE = "x1.16xlarge";
+   
+   /**
+    * X1 32x Large-scale, enterprise-class and in-memory applications
+    * <ul>
+    * <li>1952 GB memory</li>
+    * <li>128 vCPU</li>
+    * <li>Intel Xeon E7-8880 v3 (Haswell) processors</li>
+    * <li>2 SSD-based volume with 1920 GiB of instance storage</li>
+    * <li>64-bit platform</li>
+    * <li>Network Performance: 25 Gigabit</li>
+    * </ul>
+    */
+   public static final String X1_32XLARGE = "x1.32xlarge";
 }
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/compute/suppliers/AWSEC2HardwareSupplier.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/compute/suppliers/AWSEC2HardwareSupplier.java
index c3074cd..cd334fc 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/compute/suppliers/AWSEC2HardwareSupplier.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/compute/suppliers/AWSEC2HardwareSupplier.java
@@ -86,6 +86,8 @@
 import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.t2_medium;
 import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.t2_micro;
 import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.t2_small;
+import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.x1_16xlarge;
+import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.x1_32xlarge;
 
 import java.util.Set;
 
@@ -183,6 +185,8 @@
       sizes.add(d2_2xlarge().build());
       sizes.add(d2_4xlarge().build());
       sizes.add(d2_8xlarge().build());
+      sizes.add(x1_32xlarge().build());
+      sizes.add(x1_16xlarge().build());
 
       return sizes.build();
    }
