public File saveStamps(String stampPropsFile){
        File selectedFile = null;
        if(stampPropsFile != null){
            selectedFile = new File(stampPropsFile);
        } else {
            selectedFile = FileUtilities.selectFileForSave( this );
        }
        
        if(selectedFile != null ){
            // store the property to the selectedFile.
            
            try {
                FileOutputStream fos = new FileOutputStream(selectedFile);
                DataOutputStream dos = new DataOutputStream(fos);
                Iterator<CHRMultiTilePanelDecorator> itor =_stamps.iterator();
                int count = 0;
                while(itor.hasNext()){
                    CHRMultiTilePanelDecorator stamp = itor.next();
                    if(stamp.isRemoveable()) {
                        count++;
                    }
                }
                dos.writeInt(count);
                
                itor =_stamps.iterator();
                while(itor.hasNext()){
                    CHRMultiTilePanelDecorator stamp = ((CHRMultiTilePanelDecorator)itor.next());
                    if(stamp.isRemoveable()) {
                        dos.writeUTF(stamp.getTilePanel().getFileName());
                    }
                    // store the meta properties
                }
                for(int i=0;i<16;i++){
                    dos.writeByte(_modelRef.getCHRModel().getImagePaletteAtIndex(i));
                }
                for(int i=0;i<16;i++){
                    dos.writeByte(_modelRef.getCHRModel().getSpritePaletteAtIndex(i));
                }
                fos.close();
                dos.close();
            } catch(Exception e){
                e.printStackTrace();
                return null;
            }
            
            // store the binary stuff based on the prefix in the same directory
            return selectedFile;
            
        }
        return  null;
    }