Throw exceptions rather than passing around strings