add smart_truncate function