you can do very complex things with very simple building blocks, remember that even the most complex CPU is a combination of AND, OR, NOT gates combined with memory. These are very simple components, but the results that are built with these simple components are very complex.