Big options refactor, part I