split function into smaller unit