def create_table(self, tablename, hash_key, range_key=None, indexes=None,
                     global_indexes=None, throughput=None, wait=False):
        """
        Create a table

        Parameters
        ----------
        tablename : str
            Name of the table
        hash_key : :class:`~dynamo3.fields.DynamoKey`
            The key to use as the Hash key
        range_key : :class:`~dynamo3.fields.DynamoKey`, optional
            The key to use as the Range key
        indexes : list, optional
            List of :class:`~dynamo3.fields.LocalIndex`
        global_indexes : list, optional
            List of :class:`~dynamo3.fields.GlobalIndex`
        throughput : :class:`~dynamo3.fields.Throughput`, optional
            The throughput of the table

        """
        if throughput is None:
            throughput = Throughput()
        all_attrs = set([hash_key])
        if range_key is not None:
            all_attrs.add(range_key)
        key_schema = [hash_key.hash_schema()]
        if range_key is not None:
            key_schema.append(range_key.range_schema())

        kwargs = {
            'TableName': tablename,
            'KeySchema': key_schema,
            'ProvisionedThroughput': throughput.schema(),
        }
        if indexes:
            kwargs['LocalSecondaryIndexes'] = [
                idx.schema(hash_key) for idx in indexes
            ]
            for idx in indexes:
                all_attrs.add(idx.range_key)

        if global_indexes:
            kwargs['GlobalSecondaryIndexes'] = [
                idx.schema() for idx in global_indexes
            ]
            for idx in global_indexes:
                all_attrs.add(idx.hash_key)
                if idx.range_key is not None:
                    all_attrs.add(idx.range_key)

        kwargs['AttributeDefinitions'] = [attr.definition() for attr in
                                          all_attrs]
        result = self.call('create_table', **kwargs)
        if wait:
            self.client.get_waiter('table_exists').wait(
                TableName=tablename
            )
        return result