a lot of work sry
merge