better error catching, messages use settings.SITE_NAME instead of being hardcoded