Added Classes that abstract the raw procedural coding