and for fragment which could be a string, a path, ...
# announcements
a
and for fragment which could be a string, a path, a path + query, a query or whatever the user wants, you need to allow them to decide before using the fragment (#), the builder does that too