Here is an introduction to the primary requirements we play with: