this code is about functions