How To Make Your Program Think?