empty is now shared
factory match operation optimized
added check for null default