Rework Options interface and generic interface