added generics + page change listener