completed setdata()