added parallel abstract type system