TODO: implement options