needs better set logic