allow defaults for non primitives was a bad idea