abstract types and modules 8007694