starting to transplant over elements from SW5, libvision needs to be triaged for cv dependency