Moved source caching behavior into the source namespace and cleaned up the api