Throw error if trying to get non existent length
Add visibility states for hiding rather then culling, separate hasLength into hasLength and inView