basic expand and contract widget in place, though not perfect