Separates Fog's core behavior from it's API and cloud provider implementations