public void load(byte[] data) throws IOException {
		DataInputStream ds = 
				new DataInputStream(new ByteArrayInputStream(data));
		ds.readInt(); // read Type, just skip 
//		m_identifier 	= ds.readInt();
		slots 			= ds.readInt();
		if (this instanceof InnerNode) {
			m_pIdentifier 	= IO.readIntArray(ds);
		}
		for (int i = 0; i < slots; i ++) {
			keys[i] = (K) new Long(ds.readLong());
		}
		for (int i = 0; i < slots + (this.isInnerNode() ? 1 : 0); i ++) {
			boolean isNull = ds.readBoolean();
			if (isNull == false) {
				try {
					if(this.isLeafNode()) values[i] = (V) bptree.classLeafData.newInstance(); 
					else values[i] = (V) bptree.classInnerData.newInstance();
				} catch (InstantiationException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IllegalAccessException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				((V)values[i]).read(ds);
			}
		}
		if (this instanceof LeafNode) {
			n_identifier 	= ds.readInt();
		}
		ds.close();
	}