add some variants and functions.