added a generic viewholder class
modified to use generic view