Massive change to internal structure, uses an object for internal state