*separated sitecore specific code from the general library
*split up the general library into abstract classes and interfaces