maybe using a better type name than A?