improve visibility methods, add more tests
update :hidden hook, improve visibility methods