I get the following error when trying to save the controller for a Contacts visualforce page: > Error: My_Contacts Compile Error: The property List<Contact> contacts is referenced by Visualforce Page (mycontacts) in salesforce.com. Remove the usage and try again. at line 9 column 26 I'm not sure what's causing this error. I think I'm instantiating the constructor correctly. Am I missing something, or are the pagination methods I have in the controller messing things up for some reason? Here is the Visualforce page code: <apex:page controller="My_Contacts" tabStyle="Contact" sidebar="false" readOnly="true" cache="false" id="thePage"> <html xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" lang="en"> <head> <meta charset="utf-8" /> <meta http-equiv="x-ua-compatible" content="ie=edge" /> <title>My Contacts</title> <meta name="viewport" content="width=device-width, initial-scale=1" /> <apex:stylesheet value="{!URLFOR($Resource.SLDS214, 'assets/styles/salesforce-lightning-design-system-vf.min.css')}" /> </head> <body> <!-- REQUIRED SLDS WRAPPER --> <div class="vcc"> <!-- MASTHEAD --> <!-- / MASTHEAD --> <!-- PAGE HEADER --> <div class="slds-page-header" role="banner"> <div class="slds-grid"> <div class="slds-col slds-has-flexi-truncate"> <!-- HEADING AREA --> <p class="slds-text-title--caps slds-line-height--reset">Contacts</p> <h1 class="slds-page-header__title slds-truncate" title="My Contacts">My Contacts</h1> <!-- / HEADING AREA --> </div> <div class="slds-col slds-no-flex slds-grid slds-align-top"> <button class="slds-button slds-button--neutral"> <apex:outputLink value="{!URLFOR($Action.Contact.NewContact)}">New Contact </apex:outputLink></button> </div> </div> </div> <!-- / PAGE HEADER --> <!-- PRIMARY CONTENT WRAPPER --> <div class="myapp"> <apex:form id="theForm" > <apex:pageBlock > <!-- <apex:pageBlockButtons > <apex:commandButton action="{!Beginning}" title="Beginning" value="First" disabled="{!disablePrevious}" reRender="con_table"/> <apex:commandButton action="{!Previous}" title="Previous" value="Previous" disabled="{!disablePrevious}" reRender="con_table"/> <apex:commandButton action="{!Next}" title="Next" value="Next" disabled="{!disableNext}" reRender="con_table"/> <apex:commandButton action="{!End}" title="End" value="Last" disabled="{!disableNext}" reRender="con_table"/> </apex:pageBlockButtons> --> <apex:pageMessages /> <div align="center"> <div class="slds-grid slds-wrap slds-grid--pull-padded"> <div class="slds-col slds-size--1-of-3 slds-small-size--1-of-2 slds-medium-size--1-of-4"> <div align="left" class="slds-form-element__label"> <apex:outputLabel value=" View: " /> <!-- <apex:selectList value="{!filterId}" size="1"> <apex:actionSupport event="onchange" rerender="con_table"/> <apex:selectOptions value="{!listviewoptions}"/> </apex:selectList> --> </div> </div> <div class="slds-col slds-size--1-of-1"> <div class="slds-form-element__label slds-align--left slds-text-body--regular"> <apex:commandLink action="{!previous}"> Previous</apex:commandlink> | <apex:commandLink action="{!next}">Next</apex:commandlink> <p> </p> </div> </div> </div> <apex:pageBlockTable value="{!contacts}" var="con" id="con_table"> <apex:column > <apex:facet name="header">Name</apex:facet> <apex:outputLink value="{!URLFOR($Action.Contact.View, con.id)}">{!con.name}</apex:outputLink> </apex:column> <apex:column > <apex:facet name="header">Organization</apex:facet> <apex:outputlink value="{!URLFOR($Action.Account.View, con.account.id)}">{!con.account.name}</apex:outputlink> </apex:column> <apex:column value="{!con.Title}"/> <apex:column value="{!con.Email}"/> <apex:column value="{!con.Phone}"/> </apex:pageBlockTable> </div> </apex:pageBlock> </apex:form> </div> </div> </body> </html> </apex:page> And here's the controller: public with sharing class My_Contacts { String userId = UserInfo.getUserId(); private string sortExp = 'LastName'; private string sortDirection = 'ASC'; private integer counter=0; //keeps track of the offset private integer list_size=20; //sets the page size or number of rows public integer total_size; public ApexPages.StandardSetController setCon { get { if(setCon == null) { setCon = new ApexPages.StandardSetController(Database.getQueryLocator( [select Name, Title,contact.account.name, Phone, Email, owner.id from contact where owner.id =: userId order by lastName limit :list_size offset :counter])); total_size = [select count() from Contact where owner.id =: userId]; //set the total size in the constructor } return setCon; } set; } public List<Contact> getContacts() { return (List<Contact>) setCon.getRecords(); } public PageReference Beginning() { //user clicked beginning counter = 0; return null; } public PageReference Previous() { //user clicked previous button counter -= list_size; return null; } public PageReference Next() { //user clicked next button counter += list_size; return null; } public PageReference End() { //user clicked end counter = total_size - math.mod(total_size, list_size); return null; } public Boolean getDisablePrevious() { //this will disable the previous and beginning buttons if (counter>0){ return false; } else { return true; } } public Boolean getDisableNext() { //this will disable the next and end buttons if (counter + list_size < total_size) return false; else return true; } public Integer getTotal_size() { return total_size; } public Integer getPageNumber() { return counter/list_size + 1; } public Integer getTotalPages() { if (math.mod(total_size, list_size) > 0) { return total_size/list_size + 1; } else { return (total_size/list_size); } } }