Allow for reusable chains; added a reset() method. Quick and dirty, tested but not profiled.