v2 add sayHi()