Paul, merged your changes after unifying the code and design style. Have yet to polish.
merged bruce's changes