refactored uaParser to return a new instance