done up to first optional