private void readAttributesAll(ScanfReader scanReader, IndividualAttributeMaps iam, HashMap colorList,String fname)
            throws IOException {
    	String name = null;
        while (!(name = scanReader.scanString()).equals("end")) {
        	double hr=1.0;
        	double hrNotUsing;
        	if (name.equals("attributes")) { //if keyword=attributes, then read abstract name and ratio
                name = scanReader.scanString();                                                
                hrNotUsing = readHeightRatio(scanReader);
                readAttributesAll(scanReader,iam,colorList,fname);
//                iam.listOfContainers.add(container);
//                listOfContainers.add(container);
//                System.out.println("---------recurse---------");
            }        	
        	else {//if no keyword is primitive        		
        		 hr = readHeightRatio(scanReader);        		 
        		 AttributeDomain domain = AttributeDomain.read(scanReader); 
        		 AttributeCellGroup groupCell = new AttributeCellGroup(this, domain, name);
        		 iam.fillWeightMap(name, hr);
        		 iam.fillDomainMap(name, domain);
        		 String option = null;        		 
                 //This is where the program reads through the valuecharts file (.vc) and collects the properties for each of the attributes
                 while (!(option = scanReader.scanString()).equals("end")) {
                     if (option.startsWith("color=")) {
                         String colorName = option.substring(6);
                         Color color = (Color) colorList.get(colorName);
                         groupCell.setColor(color);
                         iam.fillColorMap(name, color);                                                  
                         if (color == null) {
                             throw new IOException("Unknown color '" + colorName + "'");
                         }                                 
                     } else if (option.startsWith("units=")) {
                         String unitsName = option.substring(6);
                         iam.attributeUnits = unitsName;
                         groupCell.setUnits(unitsName);
                     } else {
                         throw new IOException("Unknown option '" + option + "'");
                     }
                 }
//                 iam.listOfContainers.add(container);
        	}
        }
        
        //assign a distinct color for each user
//    	iam.userColor = generateRandomColor();
    	
        if(!iam.attributeWeightMap.isEmpty()){
        	listOfWeightMaps.put(iam.userName, iam.attributeWeightMap);
        }       
        listOfAttributeMaps.add(iam);    
//        printlistOfAttributeMaps(listOfAttributeMaps);
//        System.out.println("Attribute cell name: "+pane.getAttributeCellGroup(scanReader.scanString()).getName());
//        iam.printContainerList();
    }