implemented some of optional arguments