rename closure variables to make sure there is no collision with client code