explain functionality better