use func to separte