removed dependency on abstract supertype