refactor codes
option