@Override
    public ElementHandler createHandler(String name) {
        if ("pos".equals(name)) {
            return new VectorBuilder(parentContext, new FinishCallback<Vector3>() {

                @Override
                public void handle(Vector3 value) {
                    CameraBuilder.this.position = value;
                }
                
            });
        } else if ("up".equals(name)) {
            return new VectorBuilder(parentContext, new FinishCallback<Vector3>() {

                @Override
                public void handle(Vector3 value) {
                    CameraBuilder.this.inaccurateUpDirection = value;
                }
                
            });            
        } else if ("look_at".equals(name)) {
            return new VectorBuilder(parentContext, new FinishCallback<Vector3>() {

                @Override
                public void handle(Vector3 value) {
                    CameraBuilder.this.lookAt = value;
                }
                
            });            
        } else if ("fov_x".equals(name)) {
            return new DoubleValueBuilder(parentContext, new FinishCallback<Double>() {

                @Override
                public void handle(Double value) {
                    CameraBuilder.this.screenWidthAngle = value;
                }
                
            });
        } else if ("fov_y".equals(name)) {
            return new DoubleValueBuilder(parentContext, new FinishCallback<Double>() {

                @Override
                public void handle(Double value) {
                    CameraBuilder.this.screenHeightAngle = value;
                }
                
            });
        } else if ("dist_to_near_plane".equals(name)) {
            return new DoubleValueBuilder(parentContext, new FinishCallback<Double>() {

                @Override
                public void handle(Double value) {
                    CameraBuilder.this.screenDistance = value;
                }
                
            });            
        } else if ("refraction_method".equals(name)) {
            return new StringValueBuilder(parentContext, new FinishCallback<String>() {

                @Override
                public void handle(String value) {
                    CameraBuilder.this.refractionMethod = value;
                }
                
            });
        }
        return null;
    }