diff --git a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/AutoSuggest.js b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/AutoSuggest.js
index 2c52aca..288a7f1 100644
--- a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/AutoSuggest.js
+++ b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/AutoSuggest.js
@@ -72,7 +72,7 @@
   }
   ensureTemplate.apply( this );
   var template = this.get( "template" );
-  this.set( "suggestionTexts", currentSuggestions.map( template ) );
+  this.set( "currentSuggestionTexts", currentSuggestions.map( template ) );
 }
 
 function onChangeSelectedSuggestionIndex( event ) {
diff --git a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/DataBinding.js b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/DataBinding.js
index 21e80dd..42e84ee 100644
--- a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/DataBinding.js
+++ b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/DataBinding.js
@@ -71,8 +71,8 @@
     case "textSelection":
       onModelChangeTextSelection( textWidget, model, event );
     break;
-    case "suggestionTexts":
-      onModelChangeSuggestionTexts( dropDown, model, event );
+    case "currentSuggestionTexts":
+      onModelChangeCurrentSuggestionTexts( dropDown, model, event );
     break;
     case "suggestionsVisible":
       onModelChangeSuggestionsVisible( dropDown, model, event );
@@ -117,8 +117,8 @@
   model.notify( "accept", { type : "accept", "source" : model }  );
 }
 
-function onModelChangeSuggestionTexts( dropDown, model, event ) {
-  dropDown.setItems( model.get( "suggestionTexts" ) );
+function onModelChangeCurrentSuggestionTexts( dropDown, model, event ) {
+  dropDown.setItems( model.get( "currentSuggestionTexts" ) );
 }
 
 function onModelChangeSuggestionsVisible( dropDown, model, event ) {
diff --git a/tests/org.eclipse.rap.addons.autosuggest.test/jasmine/jasmine/specs/AutoSuggestSpec.js b/tests/org.eclipse.rap.addons.autosuggest.test/jasmine/jasmine/specs/AutoSuggestSpec.js
index bd66b94..de717ca 100644
--- a/tests/org.eclipse.rap.addons.autosuggest.test/jasmine/jasmine/specs/AutoSuggestSpec.js
+++ b/tests/org.eclipse.rap.addons.autosuggest.test/jasmine/jasmine/specs/AutoSuggestSpec.js
@@ -526,29 +526,29 @@
         expect( model.get( "replacementText" ) ).toBe( null );
       } );
 
-      it( "sets suggestionTexts unchanged if no custom template is set", function() {
+      it( "sets currentSuggestionTexts unchanged if no custom template is set", function() {
         model.addListener( "change:currentSuggestions", createClientListener( "AutoSuggest.js" ) );
 
         model.set( "currentSuggestions", [ "a", "b" ] );
 
-        expect( model.get( "suggestionTexts" ) ).toEqual( [ "a", "b" ] );
+        expect( model.get( "currentSuggestionTexts" ) ).toEqual( [ "a", "b" ] );
       } );
 
-      it( "sets suggestionTexts for columns", function() {
+      it( "sets currentSuggestionTexts for columns", function() {
         model.addListener( "change:currentSuggestions", createClientListener( "AutoSuggest.js" ) );
 
         model.set( "currentSuggestions", [ [ "a", "b", "c" ], [ "x", "y", "z" ] ] );
 
-        expect( model.get( "suggestionTexts" ) ).toEqual( [ "b\tc", "y\tz" ] );
+        expect( model.get( "currentSuggestionTexts" ) ).toEqual( [ "b\tc", "y\tz" ] );
       } );
 
-      it( "applies template to suggestionTexts", function() {
+      it( "applies template to currentSuggestionTexts", function() {
         model.addListener( "change:currentSuggestions", createClientListener( "AutoSuggest.js" ) );
         model.set( "template", function( suggestion ) { return "x" + suggestion; } );
 
         model.set( "currentSuggestions", [ "a", "b" ] );
 
-        expect( model.get( "suggestionTexts" ) ).toEqual( [ "xa", "xb" ] );
+        expect( model.get( "currentSuggestionTexts" ) ).toEqual( [ "xa", "xb" ] );
       } );
 
       it( "evaluates templateScript from dataSource", function() {
