refactor and additional options