old_contents: define([], function() {
  
  
  	var Api = function ApiConstructor($resource, server) {
  
  		this.pages = $resource(server + "/api/pages/:id");
  		this.content = $resource(server + "/api/pages/:id"); // TODO: Use the actual content endpoint once it is written.
  		this.questionPages = $resource(server + "/api/pages/questions/:id");
  		this.conceptPages = $resource(server + "/api/pages/concepts/:id");
  		this.questionValidator = $resource(server + "/api/questions/:id/answer", {}, {
  			validate: {
  				method: "POST",
  			}
  		});
  
  		this.gameBoards = $resource(server + "/api/gameboards?tags=physics,maths&level=1,2,3,4,5,6");
  
  		var questionsPerPage = 10;
  		var questionList = $resource(server + "/api/pages/questions?start_index=:startIndex&limit=:limit", {}, {'query': {method: 'GET', isArray: false }});
  		var conceptList = $resource(server + "/api/pages/concepts?start_index=:startIndex&limit=:limit", {startIndex: 0, limit: -1}, {'query': {method: 'GET', isArray: false }});
  
  		this.getQuestionList = function(page){
  			return questionList.query({"startIndex" : page*questionsPerPage, "limit" : questionsPerPage});
  		}
  
  		this.getConceptList = function(){
  			return conceptList.query();
  		}
  
  		this.getImageUrl = function(path) {
  			// check if the image source is a fully qualified link (suggesting it is external to the Isaac site)
  			if(path.indexOf("http") > -1){
  				return path;
  			}
  			else{
  				return server + "/api/images/" + path;
  			}
  		}
  
  		this.admin = {
  			synchroniseDatastores: function() {
  				$.post(server + "/api/admin/synchronise_datastores").then(function() {
  					console.warn("Synchronising Datastores. The next page load will take a while.");
  				})
  			}
  		};
  	}
  
  	return Api;
  });
new_contents: define([], function() {
  
  
  	var Api = function ApiConstructor($resource, server) {
  
  		this.pages = $resource(server + "/api/pages/:id");
  		this.content = $resource(server + "/api/pages/:id"); // TODO: Use the actual content endpoint once it is written.
  		this.questionPages = $resource(server + "/api/pages/questions/:id");
  		this.conceptPages = $resource(server + "/api/pages/concepts/:id");
  		this.questionValidator = $resource(server + "/api/questions/:id/answer", {}, {
  			validate: {
  				method: "POST",
  			}
  		});
  
  		this.gameBoards = $resource(server + "/api/gameboards?tags=physics,maths");
  
  		var questionsPerPage = 10;
  		var questionList = $resource(server + "/api/pages/questions?start_index=:startIndex&limit=:limit", {}, {'query': {method: 'GET', isArray: false }});
  		var conceptList = $resource(server + "/api/pages/concepts?start_index=:startIndex&limit=:limit", {startIndex: 0, limit: -1}, {'query': {method: 'GET', isArray: false }});
  
  		this.getQuestionList = function(page){
  			return questionList.query({"startIndex" : page*questionsPerPage, "limit" : questionsPerPage});
  		}
  
  		this.getConceptList = function(){
  			return conceptList.query();
  		}
  
  		this.getImageUrl = function(path) {
  			// check if the image source is a fully qualified link (suggesting it is external to the Isaac site)
  			if(path.indexOf("http") > -1){
  				return path;
  			}
  			else{
  				return server + "/api/images/" + path;
  			}
  		}
  
  		this.admin = {
  			synchroniseDatastores: function() {
  				$.post(server + "/api/admin/synchronise_datastores").then(function() {
  					console.warn("Synchronising Datastores. The next page load will take a while.");
  				})
  			}
  		};
  	}
  
  	return Api;
  });
subject: Remove game board level restriction for demo.