added parameter parsing using optparse