Updated abmm to use generics