works with clientside, dependent destroy