include generics and singleton pattern