major rework
More generic progress ugh
More generic progress ugh
YEAHHH