re-implement  to correctly support simultaneous values