Refactored Resource API to favor interfaces over convcrete and abstract classes