TODO: implement set function