migrates from HashDict to Map
uses maps for parsed user agent details
wraps complete parser response in struct