store ptrs in a chain instead of a vector
Refactoring, docs, improvemetns
Minor improvement