more flexible with flags