ruby pays for stuff like this to exist and sadly I'm the only one who cares