Ugh this is a mess