private int getControlPosition(int controlType) throws Exception{
        ArrayList<Integer> controls = new ArrayList<Integer>();
        for(Surface surface: this.getSurfaces()){
            for(Section section: surface.getSections()){
                for(Control control: section.getControls()){
                    if (!controls.contains(control.getType())){
                        if (control.getType() == controlType) {
                            int position = controls.size();
                            logger.log(Level.FINE, "Control {0} found at {1}", new Object[]{controlType, position});
                            return position;
                        }
                        controls.add(control.getType());
                    }
                }
            }
        }
        return -1;
    }