First pass at widget (#75)