abstract type test