Use abstract type