add function variations