docs: def makePacket(ID, instr, reg=None, params=None):
  	"""
  	This makes a generic packet.
  
  	TODO: look a struct ... does that add value using it?
  
  	0xFF, 0xFF, 0xFD, 0x00, ID, LEN_L, LEN_H, INST, PARAM 1, PARAM 2, ..., PARAM N, CRC_L, CRC_H]
  	in:
  		ID - servo id
  		instr - instruction
  		reg - register
  		params - instruction parameter values
  	out: packet
  	"""
  	pkt = []
  	pkt += [0xFF, 0xFF, 0xFD]  # header
  	pkt += [0x00]  # reserved byte
  	pkt += [ID]
  	pkt += [0x00, 0x00]  # length placeholder
  	pkt += [instr]  # instruction
  	if reg:
  		pkt += le(reg)  # not everything has a register
  	if params:
  		pkt += params    # not everything has parameters
  
  	length = le(len(pkt) - 5)  # length = len(packet) - (header(3), reserve(1), id(1))
  	pkt[5] = length[0]  # L
  	pkt[6] = length[1]  # H
  
  	crc = crc16(pkt)
  	pkt += le(crc)
  
  	return pkt