add practice generics and annotation