anchor.diff:  				tables.add(table);
   			}
   
  -			Future.wait(tables.map((Table t) => _addColumns(t))).then((_) {
  -				Future.wait(tables.map((Table t) => addForeignKeys(t))).then((_){
  -					Future.wait(tables.map((Table t) => addIndexes(t))).then((_){
  -						Future.wait(tables.map((Table t) => addPrimaryKey(t))).then((_){
  -							if(_addVendorInfo) {
  -								Future.wait(tables.map((Table t) => addTableVendorInfo(t))).then((_){
  -									c.complete(tables.length);
  +			return Future.wait(tables.map((Table t) => _addColumns(t))).then((_) {
  +				Future.wait(tables.map((Table t) => addForeignKeys(t))).then((_) {
  +					Future.wait(tables.map((Table t) => addIndexes(t))).then((_) {
  +						Future.wait(tables.map((Table t) => addPrimaryKey(t))).then((_) {
  +							if (_addVendorInfo) {
  +								Future.wait(tables.map((Table t) => addTableVendorInfo(t))).then((_) {
  +									return tables.length;
   								});
   							} else {
  -								c.complete(tables.length);
  +								return tables.length;
   							}
   						});
   					});
   				});
   			});
   		});
  -		return c.future;
   	}
   
   	Future<DDOStatement> _getColumnDefinitions(Table table) => _dbh.query("SHOW COLUMNS FROM `${table.getName()}`");
  
positive.code: 	Future addIndexes(Table table) {
  
  		return _getIndexDefinitions(table).then((DDOStatement stmt) {
  			return new Future.sync((){
  				Map<String, Index> indexes = new Map<String, Index>();
  				DDOResult row;
  
  
negative.code: 							List<Column> foreignColumns = new List<Column>();
  							Table foreignTable = database.getTable(ftbl, true);
  
  							for (String fcol in fcols) {
  								foreignColumns.add(foreignTable.getColumn(fcol));
  							}
  							for (String lcol in lcols) {
  								localColumns.add(table.getColumn(lcol));
  							}
  
  