[IN PROGRESS] Refactor singledispatch to multipledispatch

Just wanted to show what's being changed, will submit a new squashed PR when I'm done.