+ allow None arguments to constructor, and generate good defaults