a few things
added the beginning of the design part of this post