Removed things that would not be guaranteed to work
Added phase lock, with same behavior as run
Added lock with busywait