Rewrote src_t using shared_ptr to allow for ease of register allocation.