< Previous | Contents | Next >

4.2.9.1 Correct Responses Pattern Data Model Element Specifics

The cmi.interactions.n.correct_responses.n.pattern data model element holds a value that varies depending on the interaction type (cmi.interactions.n.type). This section defines the requirements of the data model value for the characterstring value defined by the pattern.


Table 4.2.9.1a: Correct Response Pattern Format Requirements


Interaction Data Type

Correct Response Pattern Format

true_false

The IEEE defines a correct response for the true_false interaction type as: true_false:

state(true, false)

Data Model Element Implementation Requirements:

Data Type: characterstring

Value Space: ISO-10646-1

Format: The IEEE defines two state values. SCORM binds these state values to the following restricted vocabulary tokens:

o “true”: Indicates that the correct response is true.

o “false”: Indicates that the correct response is false.

LMS Behavior Requirements:

Each correct response pattern is represented by a characterstring that conforms to the Data Model Element Implementation Requirements, described above, and is stored at a specific index of the correct responses collection.

The LMS shall enforce that there may only be one correct response for this type of interaction. If a SCO tries to invoke a SetValue() to store an additional pattern (a correct_responses index, n, greater than zero), the LMS shall set the error code to 351 – General Set Failure and return “false”. The LMS shall not add the new value to the valid list of patterns nor should the LMS alter the state of the currently stored pattern, if one exists.

Example:

SetValue(“cmi.interactions.0.correct_responses.0.pattern”, “true”)

multiple_choi ce

The IEEE defines a correct response for the multiple_choice interaction type as: multiple_choice:

set of set of short_identifier_type

// The set SPM: 10 sets

// The set of short_identifier_type SPM: 36 short_identifier_type


Data Model Element Implementation Requirements:

Data Type: characterstring

Value Space: An ISO-10646-1 characterstring representing a set of short_identifier_types, where each element of the set is separated by a special reserved token (“[,]”). The LMS shall support characterstrings that include at least 36 (the required SPM) short_identifier_types, separated by the reserved “[,]” token. The LMS may extend the ability to support more; however, this is implementation specific. The LMS is only responsible for managing the SPM of 36 short_identifier_types. Refer to Section 4.1.1.7: Data Types for more information on the requirements for the format of the short_identifier_type data type.

Format: The format of the characterstring shall be:

o <short_identifier_type>[,]<short_identifier_type>

The following requirements shall be adhered to when building the characterstring:

The set shall contain one or more sets of short_identifier_types.

The set of short_identifier_types may contain zero or more short_identifier_types. If


Interaction Data Type

Correct Response Pattern Format


a set of short_identifier_types is empty, it represents that the correct response is no choice.

If the set contains more than one short_identifier_type (interaction has multiple correct answers – all of which are required), then each short_identifier_type shall be separated by the special reserved token “[,]”.

Each short_identifier_type shall occur in the set only once.

The order of the short_identifier_types is insignificant.

LMS Behavior Requirements:

Each correct response pattern is represented by a characterstring that conforms to the Data Model Element Implementation Requirements, described above, and is stored at a specific index of the correct responses collection.

The LMS shall support at least 10 (the required SPM) patterns for the correct responses collection. The LMS may extend the ability to support more; however, this is implementation specific. The LMS is only responsible for managing the SPM of 10.

The LMS shall enforce the uniqueness of the correct response sets. If a SCO tries to invoke a SetValue() to store a set that already exists in the correct responses collection, LMS shall set the error code to 351 – General Set Failure and return “false”. The LMS shall not add the new value to the valid list of patterns nor should the LMS alter the state of any currently stored pattern.

Example:

SetValue(“cmi.interactions.0.correct_responses.0.pattern”,“ choice1[,]choice2[,]choice3”)

SetValue(“cmi.interactions.0.correct_responses.1.pattern”,” choice1[,]choice2”)

This is an example of a choice interaction where the correct responses collection has two patterns. The API method calls indicate that the correct response is either

“choice1”, “choice2” and “choice3”, or

“choice1” and “choice2”

fill_in

The IEEE defines a correct response for the fill_in interaction type as: fill_in:

bag of record

{

case_matters:

boolean, order_matters:

boolean, match_text:

array (0..9) of localized_string_type(250),

// The match_text array SPM: 10 localized_string_types

// The localized_string_type SPM: 250 characters

}// The bag of record SPM: 5 records

Data Model Element Implementation Requirements:

Data Type: characterstring

Value Space: An ISO-10646-1 characterstring representing an array of localized_string_types, where each element of the array is separated by a special reserved token (“[,]”). The LMS shall support characterstrings that include at least 10 (the required SPM) localized_string_types, separated by the reserved “[,]” token. The LMS may extend the ability to support more; however, this is implementation specific. The LMS is only responsible for managing the SPM of 10 localized_string_types. Refer to Section 4.1.1.7: Data Types for more information on the requirements for the format of the localized_string_type data type.

Format: The format of the characterstring shall be the following:

o {case_matters=<boolean>}{order_matters=<boolean>}<localized_string_type

>[,]<localized_string_type>


Interaction Data Type

Correct Response Pattern Format


The following requirements shall be adhered to in building the characterstring:

o The array may contain one or more localized_string_types.

o If the array contains more than one localized_string_type (the interaction has multiple correct answers – all of which are required), then they shall be separated by the special reserved token “[,]”.

o Each localized_string may occur more than once.

o The {case_matters=<boolean>} delimiter indicates whether or not the case matters for evaluation of the correct response pattern. The case_matters value shall be applied to all of the localized_string_types in the array. The

{case_matters=<boolean>} may come before or after the

{order_matters=<boolean>} delimiter. This delimiter is optional; if it is not specified the default value for case_matters is “false”. Refer to Section 4.1.1.6: Reserved Delimiters for more information on the requirements for the format of the {case_matters=<boolean>} delimiter.

o The {order_matters=<boolean>} indicates whether or not the order matters for evaluation of the correct response pattern. The order_matters value shall be applied to all of the localized_string_types in the array. The

{order_matters=<boolean>} may come before or after the

{case_matters=<boolean>} delimiter. This delimiter is optional; if it is not specified the default value for order_matters is “true”. Refer to Section 4.1.1.6: Reserved Delimiters for more information on the requirements for the format of the {order_matters=<boolean>} delimiter.

LMS Behavior Requirements:

Each correct response pattern is represented by a characterstring that conforms to the Data Model Element Implementation Requirements, described above, and is stored at a specific index of the correct responses collection.

The LMS shall support at least 5 (the required SPM) patterns for the correct responses collection. The LMS may extend the ability to support more; however, this is implementation specific. The LMS is only responsible for managing the SPM of 5.

Example:

SetValue(“cmi.interactions.0.correct_responses.0.pattern”, “{case_matters=true}{lang=en}car”)

SetValue(“cmi.interactions.0.correct_responses.1.pattern”, “{case_matters=true}{lang=en}automobile”)

This is an example of a fill_in interaction where the correct responses collection has two patterns. The API method calls indicate that the correct response is either “car” or “automobile”. The correct response must be all lowercase and the language of the localized_string_type is English.

SetValue(“cmi.interactions.0.correct_responses.0.pattern”,”{lang=en}car”)

This is an example of a fill_in interaction where the correct responses collection has one pattern. The API method call indicates that the correct response is “car”. The case of the correct response does not matter; however, the language of the localized_string_type is English.

SetValue(“cmi.interactions.0.correct_responses.0.pattern”,”car”)

This is an example of a fill_in interaction where the correct responses collection has one pattern. The API method call indicates that the correct response is “car”. Since neither of the reserved delimiters is specified the default values are used. In this example the case of the correct response does not matter; however, the language of the localized_string_type is English.

SetValue(“cmi.interactions.0.correct_responses.0.pattern”,”{case_matters=true}{or der_matters=true}car[,]automobile”)

This is an example of a fill_in interaction where the correct responses collection has one


Interaction Data Type

Correct Response Pattern Format


pattern. The API method call indicates that the correct response is “car” and “automobile” in exactly that order. The correct response must be lowercase and the language of each localized_string_type is English.

long_fill_in

The IEEE defines a correct response for the long_fill_in interaction type as: long_fill_in:

bag of record

{

case_matters:

boolean, match_text:

localized_string_type(4000),

// The localized_string_type SPM: 4000 characters

}// The bag SPM: 5 records

Data Model Element Implementation Requirements:

Data Type: characterstring

Value Space: An ISO-10646-1 characterstring representing a localized_string_type. Refer to Section 4.1.1.7: Data Types for more information on the requirements for the format of the localized_string_type data type.

Format: The format of the characterstring shall be:

o {case_matters=<boolean>}<localized_string_type>

The following requirements shall be adhered to when building the characterstring:

o The characterstring must include one localized_string_type.

o The {case_matters=<boolean>} delimiter indicates whether or not the case matters for evaluation of the correct response pattern. This delimiter is optional; if it is not specified the default value for case_matters is “false”. Refer to Section 4.1.1.6: Reserved Delimiters for more information on the requirements for the format of the {case_matters=<boolean>} delimiter.

LMS Behavior Requirements:

Each correct response pattern is represented by a characterstring that conforms to the Data Model Element Implementation Requirements, described above, and is stored at a specific index of the correct responses collection.

The LMS shall support at least 5 (the required SPM) patterns for the correct responses collection. The LMS may extend the ability to support more; however, this is implementation specific. The LMS is only responsible for managing the SPM of 5.

Example:

The following examples do not include the entire Gettysburg Address. They are written to save space and to describe the data type only. A practical use would include the entire text of the Gettysburg Address.

SetValue(“cmi.interactions.0.correct_responses.0.pattern”, “{case_matters=true}{lang=en}Four score and seven years ago…”)

This is an example of a long_fill_in interaction where the correct responses collection has one pattern. The API method call indicates that the correct response is some portion of the Gettysburg Address. The case of the correct response does matter and the language of the localized_string_type is English.

SetValue(“cmi.interactions.0.correct_responses.0.pattern”,”{lang=en}Four score and seven years ago…”)

This is an example of a long_fill_in interaction where the correct responses collection has one pattern. The API method call indicates that the correct response is some portion of the Gettysburg Address. Since the {case_matters=<boolean>} delimiter is not

specified, the default value (false) is used. In this example, the case of the correct


Interaction Data Type

Correct Response Pattern Format


response does not matter and the language of the localized_string_type is English.

likert

The IEEE defines a correct response for the likert interaction type as: likert:

short_identifier_type

Data Model Element Implementation Requirements:

Data Type: short_identifier_type

Value Space: An ISO-10646-1 characterstring representing a short_identifier_type. Refer to Section 4.1.1.7: Data Types for more information on the requirements for the format of the short_identifier_type data type.

Format: The format of the characterstring shall be:

o <short_identifier_type>

LMS Behavior Requirements:

Each correct response pattern is represented by a characterstring that conforms to the Data Model Element Implementation Requirements, described above, and is stored at a specific index of the correct responses collection.

The LMS shall enforce that there may only be one correct response for this type of interaction – cmi.interactions.n.correct_responses.0.pattern. If a SCO tries to invoke a SetValue() to store an additional pattern (a correct_responses index greater than zero), the LMS shall set the error code to 351 – General Set Failure and return “false”. The LMS shall not add the new value to the valid list of patterns nor should the LMS alter the state of the currently stored pattern, if one exists.

Example:

SetValue(“cmi.interactions.1.correct_responses.0.pattern”,“likert_1”)

This is an example of a likert interaction where the correct responses collection has one pattern. The API method call indicates that the correct response is “likert_1”. The SCO is responsible for understanding the significance of this value. For example, the identifier value of likert_1 might have a meaning of “strongly agree”.

matching

The IEEE defines a correct response for the matching interaction type as:

matching:

bag of bag of record

{

source:

short_identifier_type, target:

short_identifier_type,

}

// The bag of bag SPM: 5 bags

// The bag of record SPM: 36 records


Data Model Element Implementation Requirements:

Data Type: characterstring

Value Space: An ISO-10646-1 characterstring representing a bag of records, where each record consists of two short_identifier_types – a ‘source’ and a ‘target’. The record’s short_identifier_types are separated by a special reserved token (“[.]”). Refer to Section 4.1.1.7: Data Types for more information on the requirements for the format of the short_identifier_type data type. Each record in the bag is separated by a special reserved token (“[,]”). The LMS shall support characterstrings that include at least 36 (the required SPM) records, separated by the reserved “[,]” token. The LMS may extend the ability to support more; however, this is implementation specific. The LMS is only responsible for managing the SPM of 36 records.

Format: The format of the characterstring shall be:


Interaction Data Type

Correct Response Pattern Format


o <short_identifier_type>[.]<short_identifier_type>[,]<short_identifier_type>[.]

<short_identifier_type>

The following requirements shall be adhered to when building the characterstring:

o The bag shall contain one or more records.

o Each record shall include both a ‘source’ and a ‘target’ value separated by the special reserved token “[.]”.

o The ‘source’ and ‘target’ values are short_identifier_types.

o If the bag contains more than one record, they shall be separated by the special reserved token “[,]”.

o There is no restriction on the number of times a short_identifier_type occurs in a given characterstring.

o The order of the records is insignificant.

LMS Behavior Requirements:

Each correct response pattern is represented by a characterstring that conforms to the Data Model Element Implementation Requirements, described above, and is stored at a specific index of the correct responses collection.

The LMS shall support at least 5 (the required SPM) patterns for the correct responses collection. The LMS may extend the ability to support more; however, this is implementation specific. The LMS is only responsible for managing the SPM of 5.

Example:

SetValue(“cmi.interactions.0.correct_responses.0.pattern”, “1[.]a[,]2[.]c[,]3[.]b”)

This is an example of a matching interaction where the correct responses collection has one pattern. The API method call indicates that the correct response is:


The SCO is responsible for understanding the significance of the correct response and its constituent source/target pairs.

performance

The IEEE defines a correct response for the performance interaction type as: performance:

bag of record

(

order_matters:

boolean, answers:

array(0..124) of record

// The array of record SPM: 125 records, (

step_name : short_identifier_type,

step_answer :

choice (

state( literal, numeric)

)

of (

literal :

characterstring (ISO-10646-1),

// SPM 250

numeric : record

Source


Target

1

matches

a

2

matches

c

3

matches

b


Interaction Data Type

Correct Response Pattern Format


(

min :

real (10,7), max :

real (10,7),

)

)

)

) // The bag of record SPM: 5 records


Data Model Element Implementation Requirements:

Data Type: characterstring

Value Space: An ISO-10646-1 characterstring representing a record that consists of an {order_matters=<boolean>} delimiter and an array of records. Each of the array’s records consists of one or two of the following values separated by a special reserved token (“[.]”):

o The ‘step name’ – A short_identifier_type. Refer to Section 4.1.1.7: Data Types for more information on the requirements for the format of the short_identifier_type data type.

o The ‘step answer’ – Either a characterstring or a numerical range. If the ‘step answer’ is a characterstring, the LMS shall support at least 250 (the required SPM) characters. The LMS may extend the ability to support more; however, this is implementation specific. The LMS is only responsible for managing the SPM of 250 characters. If the ‘step answer’ is a numeric range, its format shall be:

<min>[:]<max>

Each record in the array is separated by a special reserved token (“[,]”). The LMS shall support characterstrings that include at least 125 (the required SPM) records, separated by the reserved “[,]” token. The LMS may extend the ability to support more; however, this is implementation specific. The LMS is only responsible for managing the SPM of 125 records.

Format: The format of the characterstring shall be:

o {order_matters}<step_name>[.]<step_answer>[,]<step_name>[.]<step_answer

>

The following requirements shall be adhered to when building the characterstring:

o The array shall contain one or more records.

o The {order_matters=<boolean>} delimiter indicates whether or not the order of the array records matters for evaluation of the correct response pattern. This delimiter is optional; if it is not specified the default value for order_matters is “true”. Refer to Section 4.1.1.6: Reserved Delimiters for more information on the requirements for the format of the

{order_matters=<boolean>} delimiter.

o Each of the array records shall include either a ‘step_name’ or a ‘step answer’, or both, separated by the special reserved token “[.]”.

o The ‘step name’ value is a short_identifier_type.

o The ‘step name’ value is optional. If the array record does not include a ‘step name’, then the array record must include a ‘step answer’ preceded by “[.]”.

o If the ‘step answer’ value is a not a numerical range, it shall be represented as a characterstring with an SPM of 250.

o If the ‘step answer’ value is a numerical range, it shall exhibit the following format, where <min> and <max> are both of real(10, 7) data type. Refer to Section 4.1.1.7: Data Types for more information on the requirements for the format of the real(10, 7) data type.

<min>[:]<max> – Indicates that the correct response is greater than or

equal to the minimum value supplied and less than or equal to the


Interaction Data Type

Correct Response Pattern Format


maximum value supplied. If the <min> and the <max> are identical numbers, then the correct response is exactly that number.

[:]<max> – Indicates that there is no lower bound for the correct response, only an upper bound. The value must be less than or equal to

the maximum value supplied.

<min>[:] – Indicates that there is no upper bound for the correct

response, only a lower bound. The value must be greater than or equal to the minimum value supplied.

[:] – Indicates that there is no upper or lower bound.

o The ‘step answer’ value is optional. If the array record does not include a ‘step answer’, then the array record must include a ‘step name’ succeeded by “[.]”.

o If the array contains more than one record, they shall be separated by the special reserved token “[,]”.

o There is no restriction on the number of times a ‘step name’ occurs in a given characterstring.

LMS Behavior Requirements:

Each correct response pattern is represented by a characterstring that conforms to the Data Model Element Implementation Requirements, described above, and is stored at a specific index of the correct responses collection.

The LMS shall support at least 5 (the required SPM) patterns for the correct responses collection. The LMS may extend the ability to support more; however, this is implementation specific. The LMS is only responsible for managing the SPM of 5.

Example:

SetValue(“cmi.interactions.0.correct_responses.0.pattern”, “{order_matters=false}[.]drink coffee[,][.]eat cereal”)

This is an example of a performance interaction where the correct responses collection has one pattern. The API method call indicates that the correct response is to “drink coffee” and “eat cereal”, in any order. The API method call also indicates that no ‘step_name’ was irrelevant and not provided.

SetValue(“cmi.interactions.0.correct_responses.0.pattern”,”step_1[.]inspect wound[,]step_2[.]clean wound[,]step_3[.]apply bandage”)

This is an example of a performance interaction where the correct responses collection has one pattern. The API method call indicates that the correct response is to perform “step_1” followed by “step_2” followed by “step_3”, in exactly that order, with the corresponding answers.

sequencing

The IEEE defines a correct response for the sequencing interaction type as: sequencing:

bag of array (0..35) of short_identifier_type,

// The bag of array SPM: 5 arrays

// The array of short_identifier_type SPM: 36 short_identifier_types


Data Model Element Implementation Requirements:

Data Type: characterstring

Value Space: An ISO-10646-1 characterstring representing an array of short_identifier_types, where each element of the array is separated by a special reserved token (“[,]”). The LMS shall support characterstrings that include at least 36 (the required SPM) short_identifier_types, separated by the reserved “[,]” token. The LMS may extend the ability to support more; however, this is implementation specific. The LMS is only responsible for managing the SPM of 36 short_identifier_types. Refer to Section 4.1.1.7: Data Types for more information on the requirements for the format of the short_identifier_type data type.

Format: The format of the characterstring shall be:

o <short_identifier_type>[,]<short_identifier_type>


Interaction Data Type

Correct Response Pattern Format


The following requirements shall be adhered to when building the characterstring:

o The array may contain zero or more short_identifier_types.

o If the array contains more than one short_identifier_type (the interaction has multiple correct answers – all of which are required) they shall be separated by the special reserved token “[,]”.

o Each short_identifier_type may occur more than once within the array.

o The order of the short_identifier_types is significant.

LMS Behavior Requirements:

Each correct response pattern is represented by a characterstring that conforms to the Data Model Element Implementation Requirements, described above, and is stored at a specific index of the correct responses collection.

The LMS shall support at least 5 (the required SPM) patterns for the correct responses collection. The LMS may extend the ability to support more; however, this is implementation specific. The LMS is only responsible for managing the SPM of 5.

The LMS shall enforce the uniqueness of the correct responses. If a SCO tries to invoke a SetValue() to store an array that already exists in the correct responses collection, LMS shall set the error code to 351 – General Set Failure and return “false”. The LMS shall not add the new value to the valid list of patterns nor should the LMS alter the state of any currently stored pattern.

Example:

SetValue(“cmi.interactions.0.correct_responses.0.pattern”,“a[,]b[,]c”)

SetValue(“cmi.interactions.0.correct_responses.1.pattern”,“b[,]c[,]a”)

This is an example of a sequencing interaction where the correct responses collection has two patterns. The API method calls indicate that the correct response is the sequence of a then b then c, or b then c then a.

SetValue(“cmi.interaction.0.correct_responses.1.pattern”,” buildHouse/buyMaterials[,]buildHouse/buildFoundation[,]buildHouse/buildFirstFlo or[,]buildHouse/buildSecondFloor”)

This is an example of a sequencing interaction where the correct responses collection has one pattern. The API method call indicates that the only correct response is the sequence of a then

b then a.

numeric

The IEEE defines a correct response for the numeric interaction type as: numeric:

record

(

min:

real (10,7), max:

real (10,7)

)

The numeric correct response is represented as two numbers with an optional decimal point. The numbers may be used to express an inclusive range for the correct response. If the numbers are the same, then a single number is specified as the correct response [1].


Data Model Element Implementation Requirements:

Data Type: characterstring

Value Space: An ISO-10646-1 characterstring representing a numeric range.

Format: The format of the characterstring shall be:

o <min>[:]<max>

The following requirements shall be adhered to when building the characterstring:

o If the characterstring value is a numerical range, it shall exhibit the following format, where <min> and <max> are both of real(10, 7) data type. Refer to

Section 4.1.1.7: Data Types for more information on the requirements for the


Interaction Data Type

Correct Response Pattern Format


format of the real(10, 7) data type.

<min>[:]<max> – Indicates that the correct response is greater than

or equal to the minimum value supplied and less than or equal to the maximum value supplied. If the <min> and the <max> are identical numbers, then the correct response is exactly that number.

[:]<max> – Indicates that there is no lower bound for the correct

response, only an upper bound. The value must be less than or equal to the maximum value supplied.

<min>[:] – Indicates that there is no upper bound for the correct response, only a lower bound. The value must be greater than or equal to

the minimum value supplied.

[:] – Indicates that there is no upper or lower bound.

LMS Behavior Requirements:

Each correct response pattern is represented by a characterstring that conforms to the Data Model Element Implementation Requirements, described above, and is stored at a specific index of the correct responses collection.

The LMS shall enforce that there may only be one correct response for this type of interaction – cmi.interactions.n.correct_responses.0.pattern. If a SCO tries to invoke a SetValue() to store an additional pattern (a correct_responses index greater than zero), the LMS shall set the error code to 351 – General Set Failure and return “false”. The LMS shall not add the new value to the valid list of patterns nor should the LMS alter the state of the currently stored pattern, if one exists.

Examples:

SetValue(“cmi.interactions.0.correct_responses.0.pattern”,“4[:]10”)

This is an example of a numeric interaction where the correct responses collection has one pattern. The API method call indicates that the correct response is some real number between or equal “4” and “10”.

SetValue(“cmi.interactions.0.correct_responses.0.pattern”, “[:]10”)

This is an example of a numeric interaction where the correct responses collection has one pattern. The API method call indicates that the correct response is some real number less than or equal to “10”.

SetValue(“cmi.interactions.0.correct_responses.0.pattern”, “4[:]”)

This is an example of a numeric interaction where the correct responses collection has one pattern. The API method call indicates that the correct response is some real number greater than or equal to “4”.

SetValue(“cmi.interactions.0.correct_responses.0.pattern”, “3.14159[:]3.14159”)

This is an example of a numeric interaction where the correct responses collection has one pattern. The API method call indicates that the correct response is a real number exactly equal to “3.14159”.

other

The IEEE defines a correct response for the other interaction type as: other:

characterstring (ISO-10646-1)

// The characterstring SPM 4000 characters

Data Model Element Implementation Requirements:

Data Type: characterstring

Value Space: An ISO-10646-1 characterstring

Format: The other correct response is used to support other types of interactions not defined by the IEEE standard. The format of the characterstring is left to the implementer of the interaction.

LMS Behavior Requirements:

Each correct response pattern is represented by a characterstring that conforms to


Interaction Data Type

Correct Response Pattern Format


the Data Model Element Implementation Requirements, described above, and is stored in a specific index of the correct responses collection.

The LMS shall enforce that there may only be one correct response for this type of interaction – cmi.interactions.n.correct_responses.0.pattern. If a SCO tries to invoke a SetValue() to store an additional pattern (a correct_responses index greater than zero), the LMS shall set the error code to 351 – General Set Failure and return “false”. The LMS shall not add the new value to the valid list of patterns nor should the LMS alter the state of the currently stored pattern, if one exists.