hide private vars behind closure