Improved Singleton

added lazy initialization and thread safety using inner static Holder
class
Singleton using Enum

provides easy approach to lazy initialization, serialization and thread
safety
Basic 3 Tier code