add closure support