Enterprise Version
broken into pieces