Added ViewHolder pattern to improve performance.