cleanup and seperate