keep context, handle empty and not found routes, normalize hash