{
diff --git a/src/react/data/QueryData.ts b/src/react/data/QueryData.ts
index 898cc74099f..ce3e45f20a2 100644
--- a/src/react/data/QueryData.ts
+++ b/src/react/data/QueryData.ts
@@ -1,22 +1,21 @@
import { equal } from '@wry/equality';
-import { ApolloError } from '../../errors/ApolloError';
-import { NetworkStatus } from '../../core/networkStatus';
+import { ApolloError } from '../../errors';
+
import {
+ NetworkStatus,
FetchMoreQueryOptions,
- SubscribeToMoreOptions
-} from '../../core/watchQueryOptions';
-import {
+ SubscribeToMoreOptions,
ObservableQuery,
FetchMoreOptions,
UpdateQueryOptions
-} from '../../core/ObservableQuery';
+} from '../../core';
import {
ObservableSubscription
-} from '../../utilities/observables/Observable';
+} from '../../utilities';
-import { DocumentType } from '../parser/parser';
+import { DocumentType } from '../parser';
import {
QueryResult,
QueryPreviousData,
diff --git a/src/react/data/index.ts b/src/react/data/index.ts
new file mode 100644
index 00000000000..26776e66350
--- /dev/null
+++ b/src/react/data/index.ts
@@ -0,0 +1,4 @@
+export { SubscriptionData } from './SubscriptionData';
+export { OperationData } from './OperationData';
+export { MutationData } from './MutationData';
+export { QueryData } from './QueryData';
diff --git a/src/react/hoc/__tests__/client-option.test.tsx b/src/react/hoc/__tests__/client-option.test.tsx
index b0633ae3179..52de762ef6f 100644
--- a/src/react/hoc/__tests__/client-option.test.tsx
+++ b/src/react/hoc/__tests__/client-option.test.tsx
@@ -3,14 +3,12 @@ import { render, wait } from '@testing-library/react';
import gql from 'graphql-tag';
import { DocumentNode } from 'graphql';
-import { ApolloClient } from '../../../ApolloClient';
-import { ApolloProvider } from '../../context/ApolloProvider';
-import { InMemoryCache as Cache } from '../../../cache/inmemory/inMemoryCache';
-import { mockSingleLink } from '../../../utilities/testing/mocking/mockLink';
-import { stripSymbols } from '../../../utilities/testing/stripSymbols';
+import { ApolloClient } from '../../../core';
+import { ApolloProvider } from '../../context';
+import { InMemoryCache as Cache } from '../../../cache';
+import { itAsync, stripSymbols, mockSingleLink } from '../../../testing';
import { graphql } from '../graphql';
import { ChildProps } from '../types';
-import { itAsync } from '../../../utilities/testing/itAsync';
describe('client option', () => {
it('renders with client from options', () => {
diff --git a/src/react/hoc/__tests__/fragments.test.tsx b/src/react/hoc/__tests__/fragments.test.tsx
index 6aa69c6fe5c..60cb5e9fc01 100644
--- a/src/react/hoc/__tests__/fragments.test.tsx
+++ b/src/react/hoc/__tests__/fragments.test.tsx
@@ -3,14 +3,12 @@ import { render, wait } from '@testing-library/react';
import gql from 'graphql-tag';
import { DocumentNode } from 'graphql';
-import { ApolloClient } from '../../../ApolloClient';
-import { ApolloProvider } from '../../context/ApolloProvider';
-import { InMemoryCache as Cache } from '../../../cache/inmemory/inMemoryCache';
-import { mockSingleLink } from '../../../utilities/testing/mocking/mockLink';
-import { stripSymbols } from '../../../utilities/testing/stripSymbols';
+import { ApolloClient } from '../../../core';
+import { ApolloProvider } from '../../context';
+import { InMemoryCache as Cache } from '../../../cache';
+import { itAsync, stripSymbols, mockSingleLink } from '../../../testing';
import { graphql } from '../graphql';
import { ChildProps } from '../types';
-import { itAsync } from '../../../utilities/testing/itAsync';
describe('fragments', () => {
// XXX in a later version, we should support this for composition
diff --git a/src/react/hoc/__tests__/mutations/index.test.tsx b/src/react/hoc/__tests__/mutations/index.test.tsx
index e39123f3f47..b687d6980fe 100644
--- a/src/react/hoc/__tests__/mutations/index.test.tsx
+++ b/src/react/hoc/__tests__/mutations/index.test.tsx
@@ -3,12 +3,14 @@ import { render, cleanup } from '@testing-library/react';
import gql from 'graphql-tag';
import { DocumentNode } from 'graphql';
-import { stripSymbols } from '../../../../utilities/testing/stripSymbols';
-import { createMockClient } from '../../../../utilities/testing/mocking/mockClient';
-import { MockedProvider } from '../../../../utilities/testing/mocking/MockedProvider';
-import { ApolloClient } from '../../../../ApolloClient';
-import { NormalizedCacheObject } from '../../../../cache/inmemory/types';
-import { ApolloProvider } from '../../../context/ApolloProvider';
+import { ApolloClient } from '../../../../core';
+import {
+ stripSymbols,
+ createMockClient,
+ MockedProvider,
+} from '../../../../testing';
+import { NormalizedCacheObject } from '../../../../cache';
+import { ApolloProvider } from '../../../context';
import { graphql } from '../../graphql';
import { ChildProps } from '../../types';
diff --git a/src/react/hoc/__tests__/mutations/queries.test.tsx b/src/react/hoc/__tests__/mutations/queries.test.tsx
index 51229b4470f..1c32f5e89f6 100644
--- a/src/react/hoc/__tests__/mutations/queries.test.tsx
+++ b/src/react/hoc/__tests__/mutations/queries.test.tsx
@@ -3,16 +3,17 @@ import { render, wait } from '@testing-library/react';
import gql from 'graphql-tag';
import { DocumentNode } from 'graphql';
-import { ApolloClient } from '../../../../ApolloClient';
-import { ApolloProvider } from '../../../context/ApolloProvider';
-import { InMemoryCache as Cache } from '../../../../cache/inmemory/inMemoryCache';
-import { MutationUpdaterFn } from '../../../../core/watchQueryOptions';
-import { createMockClient } from '../../../../utilities/testing/mocking/mockClient';
-import { mockSingleLink } from '../../../../utilities/testing/mocking/mockLink';
-import { stripSymbols } from '../../../../utilities/testing/stripSymbols';
+import { ApolloClient, MutationUpdaterFn } from '../../../../core';
+import { ApolloProvider } from '../../../context';
+import { InMemoryCache as Cache } from '../../../../cache';
+import {
+ itAsync,
+ stripSymbols,
+ createMockClient,
+ mockSingleLink,
+} from '../../../../testing';
import { graphql } from '../../graphql';
import { ChildProps } from '../../types';
-import { itAsync } from '../../../../utilities/testing/itAsync';
describe('graphql(mutation) query integration', () => {
itAsync('allows for passing optimisticResponse for a mutation', (resolve, reject) => {
diff --git a/src/react/hoc/__tests__/mutations/recycled-queries.test.tsx b/src/react/hoc/__tests__/mutations/recycled-queries.test.tsx
index cbc4365395b..40bcbb731d9 100644
--- a/src/react/hoc/__tests__/mutations/recycled-queries.test.tsx
+++ b/src/react/hoc/__tests__/mutations/recycled-queries.test.tsx
@@ -3,13 +3,11 @@ import { render, wait } from '@testing-library/react';
import gql from 'graphql-tag';
import { DocumentNode } from 'graphql';
-import { ApolloClient } from '../../../../ApolloClient';
-import { ApolloProvider } from '../../../context/ApolloProvider';
-import { InMemoryCache as Cache } from '../../../../cache/inmemory/inMemoryCache';
-import { MutationUpdaterFn } from '../../../../core/watchQueryOptions';
+import { ApolloClient, MutationUpdaterFn } from '../../../../core';
+import { ApolloProvider } from '../../../context';
+import { InMemoryCache as Cache } from '../../../../cache';
import { MutationFunction } from '../../../types/types';
-import { mockSingleLink } from '../../../../utilities/testing/mocking/mockLink';
-import { stripSymbols } from '../../../../utilities/testing/stripSymbols';
+import { stripSymbols, mockSingleLink } from '../../../../testing';
import { graphql } from '../../graphql';
import { ChildProps } from '../../types';
diff --git a/src/react/hoc/__tests__/queries/api.test.tsx b/src/react/hoc/__tests__/queries/api.test.tsx
index b48a916206b..566ea979284 100644
--- a/src/react/hoc/__tests__/queries/api.test.tsx
+++ b/src/react/hoc/__tests__/queries/api.test.tsx
@@ -3,14 +3,12 @@ import { render, wait } from '@testing-library/react';
import gql from 'graphql-tag';
import { DocumentNode } from 'graphql';
-import { ApolloClient } from '../../../../ApolloClient';
-import { ApolloProvider } from '../../../context/ApolloProvider';
-import { InMemoryCache as Cache } from '../../../../cache/inmemory/inMemoryCache';
-import { mockSingleLink } from '../../../../utilities/testing/mocking/mockLink';
-import { stripSymbols } from '../../../../utilities/testing/stripSymbols';
+import { ApolloClient } from '../../../../core';
+import { ApolloProvider } from '../../../context';
+import { InMemoryCache as Cache } from '../../../../cache';
+import { itAsync, stripSymbols, mockSingleLink } from '../../../../testing';
import { graphql } from '../../graphql';
import { ChildProps } from '../../types';
-import { itAsync } from '../../../../utilities/testing/itAsync';
describe('[queries] api', () => {
const consoleWarn = console.warn;
diff --git a/src/react/hoc/__tests__/queries/errors.test.tsx b/src/react/hoc/__tests__/queries/errors.test.tsx
index b120383cdc5..c854d40ae20 100644
--- a/src/react/hoc/__tests__/queries/errors.test.tsx
+++ b/src/react/hoc/__tests__/queries/errors.test.tsx
@@ -4,16 +4,14 @@ import gql from 'graphql-tag';
import { withState } from 'recompose';
import { DocumentNode } from 'graphql';
-import { ApolloClient } from '../../../../ApolloClient';
-import { ApolloProvider } from '../../../context/ApolloProvider';
-import { InMemoryCache as Cache } from '../../../../cache/inmemory/inMemoryCache';
+import { ApolloClient } from '../../../../core';
+import { ApolloProvider } from '../../../context';
+import { InMemoryCache as Cache } from '../../../../cache';
import { QueryResult } from '../../../types/types';
-import { mockSingleLink } from '../../../../utilities/testing/mocking/mockLink';
-import { stripSymbols } from '../../../../utilities/testing/stripSymbols';
+import { itAsync, stripSymbols, mockSingleLink } from '../../../../testing';
import { Query } from '../../../components/Query';
import { graphql } from '../../graphql';
import { ChildProps, DataValue } from '../../types';
-import { itAsync } from '../../../../utilities/testing/itAsync';
describe('[queries] errors', () => {
let error: typeof console.error;
diff --git a/src/react/hoc/__tests__/queries/index.test.tsx b/src/react/hoc/__tests__/queries/index.test.tsx
index 513e15aa1bd..c352db302d9 100644
--- a/src/react/hoc/__tests__/queries/index.test.tsx
+++ b/src/react/hoc/__tests__/queries/index.test.tsx
@@ -4,15 +4,13 @@ import { render, wait } from '@testing-library/react';
import gql from 'graphql-tag';
import { DocumentNode } from 'graphql';
-import { ApolloClient } from '../../../../ApolloClient';
-import { ApolloProvider } from '../../../context/ApolloProvider';
-import { InMemoryCache as Cache } from '../../../../cache/inmemory/inMemoryCache';
-import { ApolloLink } from '../../../../link/core/ApolloLink';
-import { mockSingleLink } from '../../../../utilities/testing/mocking/mockLink';
-import { stripSymbols } from '../../../../utilities/testing/stripSymbols';
+import { ApolloClient } from '../../../../core';
+import { ApolloProvider } from '../../../context';
+import { InMemoryCache as Cache } from '../../../../cache';
+import { ApolloLink } from '../../../../link/core';
+import { itAsync, stripSymbols, mockSingleLink } from '../../../../testing';
import { graphql } from '../../graphql';
import { ChildProps, DataProps } from '../../types';
-import { itAsync } from '../../../../utilities/testing/itAsync';
describe('queries', () => {
let error: typeof console.error;
diff --git a/src/react/hoc/__tests__/queries/lifecycle.test.tsx b/src/react/hoc/__tests__/queries/lifecycle.test.tsx
index e3ce07dbff7..d1a0a38bb3e 100644
--- a/src/react/hoc/__tests__/queries/lifecycle.test.tsx
+++ b/src/react/hoc/__tests__/queries/lifecycle.test.tsx
@@ -3,14 +3,13 @@ import { render, wait } from '@testing-library/react';
import gql from 'graphql-tag';
import { DocumentNode } from 'graphql';
-import { ApolloClient } from '../../../../ApolloClient';
-import { ApolloProvider } from '../../../context/ApolloProvider';
-import { InMemoryCache as Cache } from '../../../../cache/inmemory/inMemoryCache';
-import { mockSingleLink } from '../../../../utilities/testing/mocking/mockLink';
-import { Query as QueryComponent } from '../../../components/Query';
+import { ApolloClient } from '../../../../core';
+import { ApolloProvider } from '../../../context';
+import { InMemoryCache as Cache } from '../../../../cache';
+import { itAsync, mockSingleLink } from '../../../../testing';
+import { Query as QueryComponent } from '../../../components';
import { graphql } from '../../graphql';
import { ChildProps } from '../../types';
-import { itAsync } from '../../../../utilities/testing/itAsync';
describe('[queries] lifecycle', () => {
// lifecycle
diff --git a/src/react/hoc/__tests__/queries/loading.test.tsx b/src/react/hoc/__tests__/queries/loading.test.tsx
index f06e7650ffb..3289f58c216 100644
--- a/src/react/hoc/__tests__/queries/loading.test.tsx
+++ b/src/react/hoc/__tests__/queries/loading.test.tsx
@@ -3,13 +3,12 @@ import { render, wait } from '@testing-library/react';
import gql from 'graphql-tag';
import { DocumentNode } from 'graphql';
-import { ApolloClient } from '../../../../ApolloClient';
-import { ApolloProvider } from '../../../context/ApolloProvider';
-import { InMemoryCache as Cache } from '../../../../cache/inmemory/inMemoryCache';
-import { mockSingleLink } from '../../../../utilities/testing/mocking/mockLink';
+import { ApolloClient } from '../../../../core';
+import { ApolloProvider } from '../../../context';
+import { InMemoryCache as Cache } from '../../../../cache';
+import { itAsync, mockSingleLink } from '../../../../testing';
import { graphql } from '../../graphql';
import { ChildProps } from '../../types';
-import { itAsync } from '../../../../utilities/testing/itAsync';
describe('[queries] loading', () => {
// networkStatus / loading
diff --git a/src/react/hoc/__tests__/queries/observableQuery.test.tsx b/src/react/hoc/__tests__/queries/observableQuery.test.tsx
index ed1b7f37b20..7f856749ac8 100644
--- a/src/react/hoc/__tests__/queries/observableQuery.test.tsx
+++ b/src/react/hoc/__tests__/queries/observableQuery.test.tsx
@@ -3,14 +3,12 @@ import { render, fireEvent, wait } from '@testing-library/react';
import gql from 'graphql-tag';
import { DocumentNode } from 'graphql';
-import { ApolloClient } from '../../../../ApolloClient';
-import { ApolloProvider } from '../../../context/ApolloProvider';
-import { InMemoryCache as Cache } from '../../../../cache/inmemory/inMemoryCache';
-import { mockSingleLink } from '../../../../utilities/testing/mocking/mockLink';
-import { stripSymbols } from '../../../../utilities/testing/stripSymbols';
+import { ApolloClient } from '../../../../core';
+import { ApolloProvider } from '../../../context';
+import { InMemoryCache as Cache } from '../../../../cache';
+import { itAsync, stripSymbols, mockSingleLink } from '../../../../testing';
import { graphql } from '../../graphql';
import { ChildProps } from '../../types';
-import { itAsync } from '../../../../utilities/testing/itAsync';
describe('[queries] observableQuery', () => {
// observableQuery
diff --git a/src/react/hoc/__tests__/queries/polling.test.tsx b/src/react/hoc/__tests__/queries/polling.test.tsx
index a92b4a08ef7..3c1044fba67 100644
--- a/src/react/hoc/__tests__/queries/polling.test.tsx
+++ b/src/react/hoc/__tests__/queries/polling.test.tsx
@@ -3,15 +3,13 @@ import { render, wait } from '@testing-library/react';
import gql from 'graphql-tag';
import { DocumentNode } from 'graphql';
-import { ApolloClient } from '../../../../ApolloClient';
-import { ApolloLink } from '../../../../core';
-import { ApolloProvider } from '../../../context/ApolloProvider';
-import { InMemoryCache as Cache } from '../../../../cache/inmemory/inMemoryCache';
-import { mockSingleLink } from '../../../../utilities/testing/mocking/mockLink';
+import { ApolloClient, ApolloLink } from '../../../../core';
+import { ApolloProvider } from '../../../context';
+import { InMemoryCache as Cache } from '../../../../cache';
+import { itAsync, mockSingleLink } from '../../../../testing';
+import { Observable } from '../../../../utilities';
import { graphql } from '../../graphql';
import { ChildProps } from '../../types';
-import { itAsync } from '../../../../utilities/testing/itAsync';
-import { Observable } from '../../../../utilities/observables/Observable';
describe('[queries] polling', () => {
let error: typeof console.error;
diff --git a/src/react/hoc/__tests__/queries/reducer.test.tsx b/src/react/hoc/__tests__/queries/reducer.test.tsx
index 2db4bc851d4..e880c82d962 100644
--- a/src/react/hoc/__tests__/queries/reducer.test.tsx
+++ b/src/react/hoc/__tests__/queries/reducer.test.tsx
@@ -3,14 +3,12 @@ import { render, wait } from '@testing-library/react';
import gql from 'graphql-tag';
import { DocumentNode } from 'graphql';
-import { ApolloClient } from '../../../../ApolloClient';
-import { ApolloProvider } from '../../../context/ApolloProvider';
-import { InMemoryCache as Cache } from '../../../../cache/inmemory/inMemoryCache';
-import { mockSingleLink } from '../../../../utilities/testing/mocking/mockLink';
-import { stripSymbols } from '../../../../utilities/testing/stripSymbols';
+import { ApolloClient } from '../../../../core';
+import { ApolloProvider } from '../../../context';
+import { InMemoryCache as Cache } from '../../../../cache';
+import { itAsync, stripSymbols, mockSingleLink } from '../../../../testing';
import { graphql } from '../../graphql';
import { DataValue } from '../../types';
-import { itAsync } from '../../../../utilities/testing/itAsync';
describe('[queries] reducer', () => {
// props reducer
diff --git a/src/react/hoc/__tests__/queries/skip.test.tsx b/src/react/hoc/__tests__/queries/skip.test.tsx
index 2fe713e008b..19d43677fe2 100644
--- a/src/react/hoc/__tests__/queries/skip.test.tsx
+++ b/src/react/hoc/__tests__/queries/skip.test.tsx
@@ -3,15 +3,13 @@ import { render, wait } from '@testing-library/react';
import gql from 'graphql-tag';
import { DocumentNode } from 'graphql';
-import { ApolloClient } from '../../../../ApolloClient';
-import { ApolloProvider } from '../../../context/ApolloProvider';
-import { InMemoryCache as Cache } from '../../../../cache/inmemory/inMemoryCache';
-import { ApolloLink } from '../../../../link/core/ApolloLink';
-import { mockSingleLink } from '../../../../utilities/testing/mocking/mockLink';
-import { stripSymbols } from '../../../../utilities/testing/stripSymbols';
+import { ApolloClient } from '../../../../core';
+import { ApolloProvider } from '../../../context';
+import { InMemoryCache as Cache } from '../../../../cache';
+import { ApolloLink } from '../../../../link/core';
+import { itAsync, stripSymbols, mockSingleLink } from '../../../../testing';
import { graphql } from '../../graphql';
import { ChildProps } from '../../types';
-import { itAsync } from '../../../../utilities/testing/itAsync';
describe('[queries] skip', () => {
itAsync('allows you to skip a query without running it', (resolve, reject) => {
diff --git a/src/react/hoc/__tests__/queries/updateQuery.test.tsx b/src/react/hoc/__tests__/queries/updateQuery.test.tsx
index 61460f01f3d..c4a31836eb9 100644
--- a/src/react/hoc/__tests__/queries/updateQuery.test.tsx
+++ b/src/react/hoc/__tests__/queries/updateQuery.test.tsx
@@ -3,14 +3,12 @@ import gql from 'graphql-tag';
import { DocumentNode } from 'graphql';
import { render, wait } from '@testing-library/react';
-import { ApolloClient } from '../../../../ApolloClient';
-import { ApolloProvider } from '../../../context/ApolloProvider';
-import { InMemoryCache as Cache } from '../../../../cache/inmemory/inMemoryCache';
-import { mockSingleLink } from '../../../../utilities/testing/mocking/mockLink';
-import { stripSymbols } from '../../../../utilities/testing/stripSymbols';
+import { ApolloClient } from '../../../../core';
+import { ApolloProvider } from '../../../context';
+import { InMemoryCache as Cache } from '../../../../cache';
+import { itAsync, stripSymbols, mockSingleLink } from '../../../../testing';
import { graphql } from '../../graphql';
import { ChildProps } from '../../types';
-import { itAsync } from '../../../../utilities/testing/itAsync';
describe('[queries] updateQuery', () => {
// updateQuery
diff --git a/src/react/hoc/__tests__/shared-operations.test.tsx b/src/react/hoc/__tests__/shared-operations.test.tsx
index b711639aca6..9ad1fc2322b 100644
--- a/src/react/hoc/__tests__/shared-operations.test.tsx
+++ b/src/react/hoc/__tests__/shared-operations.test.tsx
@@ -3,11 +3,11 @@ import { render, cleanup } from '@testing-library/react';
import gql from 'graphql-tag';
import { DocumentNode } from 'graphql';
-import { ApolloClient } from '../../../ApolloClient';
-import { ApolloProvider } from '../../context/ApolloProvider';
-import { InMemoryCache as Cache } from '../../../cache/inmemory/inMemoryCache';
-import { ApolloLink } from '../../../link/core/ApolloLink';
-import { mockSingleLink } from '../../../utilities/testing/mocking/mockLink';
+import { ApolloClient } from '../../../core';
+import { ApolloProvider } from '../../context';
+import { InMemoryCache as Cache } from '../../../cache';
+import { ApolloLink } from '../../../link/core';
+import { mockSingleLink } from '../../../testing';
import { graphql } from '../graphql';
import { ChildProps, DataValue } from '../types';
import { withApollo } from '../withApollo';
diff --git a/src/react/hoc/__tests__/ssr/getDataFromTree.test.tsx b/src/react/hoc/__tests__/ssr/getDataFromTree.test.tsx
index c96ad6453c3..2d4abcf1126 100644
--- a/src/react/hoc/__tests__/ssr/getDataFromTree.test.tsx
+++ b/src/react/hoc/__tests__/ssr/getDataFromTree.test.tsx
@@ -4,12 +4,12 @@ import ReactDOM from 'react-dom/server';
import gql from 'graphql-tag';
import { DocumentNode } from 'graphql';
-import { ApolloClient } from '../../../../ApolloClient';
-import { ApolloProvider } from '../../../context/ApolloProvider';
-import { InMemoryCache as Cache } from '../../../../cache/inmemory/inMemoryCache';
-import { mockSingleLink } from '../../../../utilities/testing/mocking/mockLink';
-import { Query } from '../../../components/Query';
-import { getDataFromTree, getMarkupFromTree } from '../../../ssr/getDataFromTree';
+import { ApolloClient } from '../../../../core';
+import { ApolloProvider } from '../../../context';
+import { InMemoryCache as Cache } from '../../../../cache';
+import { mockSingleLink } from '../../../../testing';
+import { Query } from '../../../components';
+import { getDataFromTree, getMarkupFromTree } from '../../../ssr';
import { graphql } from '../../graphql';
import { ChildProps, DataValue } from '../../types';
diff --git a/src/react/hoc/__tests__/ssr/server.test.tsx b/src/react/hoc/__tests__/ssr/server.test.tsx
index f8fa3d61ca8..f7ba71de7ea 100644
--- a/src/react/hoc/__tests__/ssr/server.test.tsx
+++ b/src/react/hoc/__tests__/ssr/server.test.tsx
@@ -11,12 +11,12 @@ import {
} from 'graphql';
import gql from 'graphql-tag';
-import { ApolloClient } from '../../../../ApolloClient';
-import { ApolloProvider } from '../../../context/ApolloProvider';
-import { InMemoryCache as Cache } from '../../../../cache/inmemory/inMemoryCache';
-import { ApolloLink } from '../../../../link/core/ApolloLink';
-import { Observable } from '../../../../utilities/observables/Observable';
-import { renderToStringWithData } from '../../../ssr/renderToStringWithData';
+import { ApolloClient } from '../../../../core';
+import { ApolloProvider } from '../../../context';
+import { InMemoryCache as Cache } from '../../../../cache';
+import { ApolloLink } from '../../../../link/core';
+import { Observable } from '../../../../utilities';
+import { renderToStringWithData } from '../../../ssr';
import { graphql } from '../../graphql';
import { ChildProps } from '../../types';
diff --git a/src/react/hoc/__tests__/subscriptions/subscriptions.test.tsx b/src/react/hoc/__tests__/subscriptions/subscriptions.test.tsx
index 48a1eba9e3b..34eecca9c8d 100644
--- a/src/react/hoc/__tests__/subscriptions/subscriptions.test.tsx
+++ b/src/react/hoc/__tests__/subscriptions/subscriptions.test.tsx
@@ -3,12 +3,11 @@ import { render, cleanup } from '@testing-library/react';
import gql from 'graphql-tag';
import { DocumentNode } from 'graphql';
-import { ApolloClient } from '../../../../ApolloClient';
-import { ApolloProvider } from '../../../context/ApolloProvider';
-import { InMemoryCache as Cache } from '../../../../cache/inmemory/inMemoryCache';
-import { ApolloLink } from '../../../../link/core/ApolloLink';
-import { MockSubscriptionLink } from '../../../../utilities/testing/mocking/mockSubscriptionLink';
-import { stripSymbols } from '../../../../utilities/testing/stripSymbols';
+import { ApolloClient } from '../../../../core';
+import { ApolloProvider } from '../../../context';
+import { InMemoryCache as Cache } from '../../../../cache';
+import { ApolloLink } from '../../../../link/core';
+import { stripSymbols, MockSubscriptionLink } from '../../../../testing';
import { graphql } from '../../graphql';
import { ChildProps } from '../../types';
diff --git a/src/react/hoc/graphql.tsx b/src/react/hoc/graphql.tsx
index e104ad47992..a85f40a3861 100644
--- a/src/react/hoc/graphql.tsx
+++ b/src/react/hoc/graphql.tsx
@@ -1,6 +1,6 @@
import { DocumentNode } from 'graphql';
-import { parser, DocumentType } from '../parser/parser';
+import { parser, DocumentType } from '../parser';
import { withQuery } from './query-hoc';
import { withMutation } from './mutation-hoc';
import { withSubscription } from './subscription-hoc';
diff --git a/src/react/hoc/hoc-utils.tsx b/src/react/hoc/hoc-utils.tsx
index 322cd7e5067..1a80dd6d151 100644
--- a/src/react/hoc/hoc-utils.tsx
+++ b/src/react/hoc/hoc-utils.tsx
@@ -1,7 +1,7 @@
import React from 'react';
import { invariant } from 'ts-invariant';
-import { OperationVariables } from '../../core/types';
-import { IDocumentDefinition } from '../parser/parser';
+import { OperationVariables } from '../../core';
+import { IDocumentDefinition } from '../parser';
export const defaultMapPropsToOptions = () => ({});
export const defaultMapResultToProps: (props: P) => P = props => props;
diff --git a/src/react/hoc/mutation-hoc.tsx b/src/react/hoc/mutation-hoc.tsx
index 4188e51544a..5159753e678 100644
--- a/src/react/hoc/mutation-hoc.tsx
+++ b/src/react/hoc/mutation-hoc.tsx
@@ -2,13 +2,13 @@ import React from 'react';
import { DocumentNode } from 'graphql';
import hoistNonReactStatics from 'hoist-non-react-statics';
-import { parser } from '../parser/parser';
+import { parser } from '../parser';
import {
BaseMutationOptions,
MutationFunction,
MutationResult
} from '../types/types';
-import { Mutation } from '../components/Mutation';
+import { Mutation } from '../components';
import {
defaultMapPropsToOptions,
diff --git a/src/react/hoc/query-hoc.tsx b/src/react/hoc/query-hoc.tsx
index dcc4c2f0966..428a64714d9 100644
--- a/src/react/hoc/query-hoc.tsx
+++ b/src/react/hoc/query-hoc.tsx
@@ -2,9 +2,9 @@ import React from 'react';
import { DocumentNode } from 'graphql';
import hoistNonReactStatics from 'hoist-non-react-statics';
-import { parser } from '../parser/parser';
+import { parser } from '../parser';
import { BaseQueryOptions } from '../types/types';
-import { Query } from '../components/Query';
+import { Query } from '../components';
import {
getDisplayName,
GraphQLBase,
diff --git a/src/react/hoc/subscription-hoc.tsx b/src/react/hoc/subscription-hoc.tsx
index 641d47ac588..906d14a905f 100644
--- a/src/react/hoc/subscription-hoc.tsx
+++ b/src/react/hoc/subscription-hoc.tsx
@@ -2,9 +2,9 @@ import React from 'react';
import { DocumentNode } from 'graphql';
import hoistNonReactStatics from 'hoist-non-react-statics';
-import { parser } from '../parser/parser';
+import { parser } from '../parser';
import { BaseQueryOptions } from '../types/types';
-import { Subscription } from '../components/Subscription';
+import { Subscription } from '../components';
import {
getDisplayName,
GraphQLBase,
diff --git a/src/react/hoc/types.ts b/src/react/hoc/types.ts
index 4307a1e6115..909878aa6f3 100644
--- a/src/react/hoc/types.ts
+++ b/src/react/hoc/types.ts
@@ -1,14 +1,13 @@
-import { ApolloClient } from '../../ApolloClient';
-import { ApolloQueryResult, OperationVariables } from '../../core/types';
-import { ApolloError } from '../../errors/ApolloError';
+import { ApolloClient } from '../../core';
+import { ApolloError } from '../../errors';
import {
+ ApolloQueryResult,
+ OperationVariables,
FetchMoreOptions,
UpdateQueryOptions,
-} from '../../core/ObservableQuery';
-import {
FetchMoreQueryOptions,
SubscribeToMoreOptions,
-} from '../../core/watchQueryOptions';
+} from '../../core';
import {
MutationFunction,
BaseQueryOptions,
diff --git a/src/react/hoc/withApollo.tsx b/src/react/hoc/withApollo.tsx
index 295a096c916..9b6422b0ef1 100644
--- a/src/react/hoc/withApollo.tsx
+++ b/src/react/hoc/withApollo.tsx
@@ -2,7 +2,7 @@ import React from 'react';
import hoistNonReactStatics from 'hoist-non-react-statics';
import { invariant } from 'ts-invariant';
-import { ApolloConsumer } from '../context/ApolloConsumer';
+import { ApolloConsumer } from '../context';
import { OperationOption, WithApolloClient } from './types';
function getDisplayName
(WrappedComponent: React.ComponentType
) {
diff --git a/src/react/hooks/__tests__/useApolloClient.test.tsx b/src/react/hooks/__tests__/useApolloClient.test.tsx
index 1a1490efbb7..2043350fd24 100644
--- a/src/react/hooks/__tests__/useApolloClient.test.tsx
+++ b/src/react/hooks/__tests__/useApolloClient.test.tsx
@@ -2,12 +2,11 @@ import React from 'react';
import { render, cleanup } from '@testing-library/react';
import { InvariantError } from 'ts-invariant';
-import { ApolloLink } from '../../../link/core/ApolloLink';
-import { ApolloProvider } from '../../context/ApolloProvider';
-import { ApolloClient } from '../../../ApolloClient';
-import { InMemoryCache } from '../../../cache/inmemory/inMemoryCache';
+import { ApolloClient } from '../../../core';
+import { ApolloLink } from '../../../link/core';
+import { ApolloProvider, resetApolloContext } from '../../context';
+import { InMemoryCache } from '../../../cache';
import { useApolloClient } from '../useApolloClient';
-import { resetApolloContext } from '../../context/ApolloContext';
describe('useApolloClient Hook', () => {
afterEach(() => {
diff --git a/src/react/hooks/__tests__/useLazyQuery.test.tsx b/src/react/hooks/__tests__/useLazyQuery.test.tsx
index 4f26803c37e..568a2013b59 100644
--- a/src/react/hooks/__tests__/useLazyQuery.test.tsx
+++ b/src/react/hooks/__tests__/useLazyQuery.test.tsx
@@ -3,10 +3,10 @@ import { DocumentNode } from 'graphql';
import gql from 'graphql-tag';
import { render, wait } from '@testing-library/react';
-import { MockedProvider } from '../../../utilities/testing';
-import { ApolloClient } from '../../../ApolloClient';
-import { InMemoryCache } from '../../../cache/inmemory/inMemoryCache';
-import { ApolloProvider } from '../../context/ApolloProvider';
+import { ApolloClient } from '../../../core';
+import { InMemoryCache } from '../../../cache';
+import { ApolloProvider } from '../../context';
+import { MockedProvider } from '../../../testing';
import { useLazyQuery } from '../useLazyQuery';
describe('useLazyQuery Hook', () => {
diff --git a/src/react/hooks/__tests__/useMutation.test.tsx b/src/react/hooks/__tests__/useMutation.test.tsx
index 4afa79add91..5d466398b28 100644
--- a/src/react/hooks/__tests__/useMutation.test.tsx
+++ b/src/react/hooks/__tests__/useMutation.test.tsx
@@ -3,11 +3,10 @@ import { DocumentNode, GraphQLError } from 'graphql';
import gql from 'graphql-tag';
import { render, cleanup, wait } from '@testing-library/react';
-import { MockedProvider, mockSingleLink } from '../../../utilities/testing';
-import { itAsync } from '../../../utilities/testing/itAsync';
-import { ApolloClient } from '../../../ApolloClient';
-import { InMemoryCache } from '../../../cache/inmemory/inMemoryCache';
-import { ApolloProvider } from '../../context/ApolloProvider';
+import { ApolloClient } from '../../../core';
+import { InMemoryCache } from '../../../cache';
+import { itAsync, MockedProvider, mockSingleLink } from '../../../testing';
+import { ApolloProvider } from '../../context';
import { useMutation } from '../useMutation';
describe('useMutation Hook', () => {
diff --git a/src/react/hooks/__tests__/useQuery.test.tsx b/src/react/hooks/__tests__/useQuery.test.tsx
index 6a87cdbfd66..be8d208663c 100644
--- a/src/react/hooks/__tests__/useQuery.test.tsx
+++ b/src/react/hooks/__tests__/useQuery.test.tsx
@@ -3,20 +3,15 @@ import { DocumentNode, GraphQLError } from 'graphql';
import gql from 'graphql-tag';
import { render, cleanup, wait } from '@testing-library/react';
-import { Observable } from '../../../utilities/observables/Observable';
-import { ApolloLink } from '../../../link/core/ApolloLink';
-import { MockedProvider, mockSingleLink } from '../../../utilities/testing';
-import { MockLink } from '../../../utilities/testing/mocking/mockLink';
-import { itAsync } from '../../../utilities/testing/itAsync';
-import { ApolloClient } from '../../../ApolloClient';
-import { InMemoryCache } from '../../../cache/inmemory/inMemoryCache';
-import { ApolloProvider } from '../../context/ApolloProvider';
+import { ApolloClient, NetworkStatus } from '../../../core';
+import { InMemoryCache } from '../../../cache';
+import { ApolloProvider } from '../../context';
+import { Observable, Reference, concatPagination } from '../../../utilities';
+import { ApolloLink } from '../../../link/core';
+import { itAsync, MockLink, MockedProvider, mockSingleLink } from '../../../testing';
import { useQuery } from '../useQuery';
import { useMutation } from '../useMutation';
import { QueryFunctionOptions } from '../..';
-import { NetworkStatus } from '../../../core/networkStatus';
-import { Reference } from '../../../utilities/graphql/storeUtils';
-import { concatPagination } from '../../../utilities';
describe('useQuery Hook', () => {
const CAR_QUERY: DocumentNode = gql`
diff --git a/src/react/hooks/__tests__/useSubscription.test.tsx b/src/react/hooks/__tests__/useSubscription.test.tsx
index c5d66c826a0..3ffeccd19ee 100644
--- a/src/react/hooks/__tests__/useSubscription.test.tsx
+++ b/src/react/hooks/__tests__/useSubscription.test.tsx
@@ -2,10 +2,10 @@ import React from 'react';
import { render, cleanup, wait } from '@testing-library/react';
import gql from 'graphql-tag';
-import { MockSubscriptionLink } from '../../../utilities/testing/mocking/mockSubscriptionLink';
-import { ApolloClient } from '../../../ApolloClient';
-import { InMemoryCache as Cache } from '../../../cache/inmemory/inMemoryCache';
-import { ApolloProvider } from '../../context/ApolloProvider';
+import { ApolloClient } from '../../../core';
+import { InMemoryCache as Cache } from '../../../cache';
+import { ApolloProvider } from '../../context';
+import { MockSubscriptionLink } from '../../../testing';
import { useSubscription } from '../useSubscription';
describe('useSubscription Hook', () => {
diff --git a/src/react/hooks/index.ts b/src/react/hooks/index.ts
new file mode 100644
index 00000000000..b301bfed59d
--- /dev/null
+++ b/src/react/hooks/index.ts
@@ -0,0 +1,5 @@
+export * from './useApolloClient';
+export * from './useLazyQuery';
+export * from './useMutation';
+export * from './useQuery';
+export * from './useSubscription';
diff --git a/src/react/hooks/useApolloClient.ts b/src/react/hooks/useApolloClient.ts
index c7b4deb4d3d..52390348a0a 100644
--- a/src/react/hooks/useApolloClient.ts
+++ b/src/react/hooks/useApolloClient.ts
@@ -1,8 +1,8 @@
import React from 'react';
import { invariant } from 'ts-invariant';
-import { ApolloClient } from '../../ApolloClient';
-import { getApolloContext } from '../context/ApolloContext';
+import { ApolloClient } from '../../core';
+import { getApolloContext } from '../context';
export function useApolloClient(): ApolloClient