Put it all in one func