This is looking quite generic/not redirect specific - should it be moved to a parent class?