implement message api and etc...