Using values instead of pointers as method receivers.
Separating errors into their own package; creating UnauthorizedError.