first pass at structure for generalized handling