custom list deconstruction