implement options