Signed-off-by: Bryant G. Duffy-Ly <bduffyly@versity.com> [zab@versity.com: refactored for retention, added test cases] Signed-off-by: Zach Brown <zab@versity.com>