add smart assert