core: respect visibility