make sure to read options first