Split the types and type predicates into their own namespace.
Split out a utils namespace.
Return an empty string when location is empty.