split some function to ...