code: function determineBestParent(conn, objUnit, arrWitnesses, handleBestParent){
  	// choose best parent among compatible parents only
  	conn.query(
  		"SELECT unit \n\
  		FROM units AS parent_units \n\
  		WHERE unit IN(?) \n\
  			AND (witness_list_unit=? OR ( \n\
  				SELECT COUNT(*) \n\
  				FROM unit_witnesses AS parent_witnesses \n\
  				WHERE parent_witnesses.unit IN(parent_units.unit, parent_units.witness_list_unit) AND address IN(?) \n\
  			)>=?) \n\
  		ORDER BY witnessed_level DESC, \n\
  			level-witnessed_level ASC, \n\
  			unit ASC \n\
  		LIMIT 1", 
  		[objUnit.parent_units, objUnit.witness_list_unit, 
  		arrWitnesses, constants.COUNT_WITNESSES - constants.MAX_WITNESS_LIST_MUTATIONS], 
  		function(rows){
  			if (rows.length !== 1)
  				return handleBestParent(null);
  			var best_parent_unit = rows[0].unit;
  			handleBestParent(best_parent_unit);
  		}
  	);
  }
docs: for unit that is not saved to the db yet