issue #53 - dynamic sizing mostly works with real widgets now. still need to fix initial size and do lots of cleanup