delegate impl & add doc