starting work on conditional / thread impl