added opts parser