new design and fix bugs with hide