refactor msg API