added isVisible()
cleanup