implemented thinker