more object-oriented-ness, events, ability to add swatches and store in localStorage