auto instantiate constructor via apply(args)