Refactor SoftDelete and add HasManyAs