separate all function