Towards a Theory of Thinking: Building Blocks for a