This class was meant to be simple. Now it's a total cluster fuck. It's gonna need a re-write.