seperate add function