Add new generic option system