redid everything with a much clearer macro