change modes to [all, normal, full_only, first_only], make output as list.
Fix null point error if empty mode.