tidying up abstract type classes