explain functions