added wait / cancel
fixed pesky little bug in wait_units()