Added concept of an 'Input', which allows us to do away with one unnecessary
copy of the data by declaring what sort of modifiable data structure we want
before starting to input values.