Updated to not throw exceptions. Seriously.