abstract layer selector in viewer