seperate function
explain