 
 PDU_BY_TYPE =
   '01': PDUAssociateRq
+  '02': PDUAssociateAc
+
+PDU_BY_NAME =
+  'association_rq': PDUAssociateRq
+  'association_ac': PDUAssociateAc
 pdu_constructor = (type) ->
   _hex = printf("%02X", type)
   return PDU_BY_TYPE[_hex]
+pdu_by_name = (arg) ->
+  if arg instanceof PDU
+    return arg
+  return new (PDU_BY_NAME[arg.name])(arg)
 
 
 ITEM_BY_TYPE =
   '10': ApplicationContextItem
   '20': PresentationContextItem
+  '21': PresentationContextItemAc
   '30': AbstractSyntaxItem
   '40': TransferSyntaxItem
   '50': UserInformationItem


  _transform: (pdu, _, cb) ->
    try
      __buff = pdu.encode()
      log.trace({length: __buff.length}, "_transform: emitting pdu buffer")
      @push __buff
      cb()

ITEM_BY_NAME =
  'application_context': ApplicationContextItem
  'presentation_context': PresentationContextItem
  'presentation_context_ac': PresentationContextItemAc
  'abstract_syntax': AbstractSyntaxItem
  'transfer_syntax': TransferSyntaxItem
  'user_information': UserInformationItem
