not perfect, but all accounted for