turned IDGenerator into a Singleton pattern
implemented the ViewHolder pattern