Rename to more accurately reflect its usage. Some minor changes to improve readability, plus make error checking more permissive.
Gut & redirect to all in one - no point keeping both up to date.