be more flexible with null args