split code to different module