generalize
support 2.0