added if exists and cascade