tutorial 3 - using generics