Change to abstract base class

changed to abstract class, deleted custom exception class, added regions
to group constants, deleted static constructor, other misc changes