this took me far too long to make