Refactor Base

Some of the async tests are still failing - will need to fix.