class HadoopTables implements Tables, Configurable {

  @Override
  public Table create(Schema schema, PartitionSpec spec, SortOrder order,
                      Map<String, String> properties, String location) {
    Preconditions.checkNotNull(schema, "A table schema is required");

    TableOperations ops = newTableOps(location);
    if (ops.current() != null) {
      throw new AlreadyExistsException("Table already exists at location: %s", location);
    }

    Map<String, String> tableProps = properties == null ? ImmutableMap.of() : properties;
    PartitionSpec partitionSpec = spec == null ? PartitionSpec.unpartitioned() : spec;
    SortOrder sortOrder = order == null ? SortOrder.unsorted() : order;
    TableMetadata metadata = TableMetadata.newTableMetadata(schema, partitionSpec, sortOrder, location, tableProps);
    ops.commit(null, metadata);

    return new BaseTable(ops, location);
  }

  public  HadoopTables();
  public  HadoopTables(Configuration conf);

}