flags should be an optional parameter