Base is now a buffer factory (using shared pointers)