Also, purely a structure design suggestion:

When making something like this, it can be assumed 1) you will have an interface of sorts to display each piece and 2) you will want to fire events for...