reduce startup cost
added poly generics