public byte[] populate(byte[] frameData) {
		logger.debug("populate..");
		boolean readingState=false;
		int bytesRead=0;
		//boolean frameCompleted=false;
		ByteBuffer payloadBuffer = ByteBuffer.allocate(frameData.length);
		for (byte newestByte:frameData){
			bytesRead++;
			if (newestByte == START_OF_FRAME && !readingState) {
				logger.debug("frame start");
				readingState=true;
			}else if(newestByte == END_OF_FRAME && readingState){
				logger.debug("frame end");
				//frameCompleted=true;
				readingState=false;
				payloadData = payloadBuffer.array();
				break;
			}else if(readingState){
				payloadBuffer.put(newestByte);
			}
		}
		logger.debug(payloadData);
		logger.debug("payload len: "+payloadData.length);
		messageFrame = (payloadData.length>0);
		byte[] unprocessedBytes = new byte[frameData.length-bytesRead];
		int j=0;
		for (int i=bytesRead;i<frameData.length;i++){
			unprocessedBytes[j++]=frameData[i];
		}
		/*TODO:  Handle case where frame data was not completely received*/
		return unprocessedBytes;
	}