function definitions vs expressions