pulled custom errors into separate file to avoid confusion