Machine thinking