refactoring with new factory method `_.on(T...)` && `_.list(T...)`