a bit more cleanup; maybe will add labels to the canvas later, and validations for the inputs