re-implement options