extract Exception class into its own file
add Support class to detect useragent if not set