added sub_class, transient and varargs