option refactor