opts parser sucks and we had to compromise