This whole diff kinda sucked given that I changed most docstrings and method signatures, but kept enough for it to not register as deleting the entire method and rewriting it.