A major overhaul of the application

The internal representation of the displayed number has to be a String
in order to allow trailing zeroes to be displayed. This meant a
significant rewrite of the application.