diff --git a/editor.html b/editor.html
index 52dae67..5b48c7a 100755
--- a/editor.html
+++ b/editor.html
@@ -15,6 +15,8 @@
 
 
 
+
+
 
 
 
diff --git a/editor.js b/editor.js
new file mode 100755
index 0000000..ec05e7c
--- /dev/null
+++ b/editor.js
@@ -0,0 +1,197 @@
+/**********************************************************************
+*
+* Magazine editor actions
+*
+*
+**********************************************************************/
+
+/************************************************ editor: magazine ***/
+
+// NOTE: we do not need to create any event handlers here specifically 
+// 		as all events are ahndled by the viewer...
+function loadMagazine(mag, position, bookmarks){
+	mag = loadMagazineData(mag)
+	loadMagazineChrome(position, bookmarks)
+	return mag
+}
+
+
+// NOTE: this will, in addition to the magazine itself, will populate with
+// 		the basic content (cover, article, article cover)
+function createBaseMagazine(title, cover, article){
+	removeMagazine()
+	var mag = loadMagazine(createMagazine(title, cover, article))
+	return mag
+}
+
+
+/************************************************* editor: article ***/
+
+function createArticleBefore(article, title){
+	if(article == null){
+		article = $('.current.page').parents('.article')
+	}
+	// XXX fill the data...
+	var res = createArticle().insertBefore(article)
+	setCurrentPage()
+	$('.viewer').trigger('articleCreated', res)
+	return res
+}
+function createArticleAfter(article, title){
+	if(article == null){
+		article = $('.current.page').parents('.article')
+	}
+	// XXX fill the data...
+	var res = createArticle().insertAfter(article)
+	setCurrentPage()
+	$('.viewer').trigger('articleCreated', res)
+	return res
+}
+
+
+// XXX TEST!
+function shiftArticleLeft(article){
+	var articles = $('.article')
+	var i = articles.index(article)
+	if(i <= 0){
+		return article
+	}
+	var target = $(articles[i-1])
+	article
+		.detach()
+		.insertBefore(target)
+	setCurrentPage()
+	$('.viewer').trigger('articleMoved', res)
+	return res
+}
+// XXX TEST!
+function shiftArticleRight(article){
+	var articles = $('.article')
+	var i = articles.index(article)
+	if(i >= articles.length){
+		return article
+	}
+	var target = $(articles[i+1])
+	article
+		.detach()
+		.insertAfter(target)
+	setCurrentPage()
+	$('.viewer').trigger('articleMoved', res)
+	return res
+}
+
+
+function removeArticle(article){
+	if(article == null){
+		article = $('.current.page').parents('.article')
+	}
+	article.remove()
+	setCurrentPage()
+	$('.viewer').trigger('articleRemoved', res)
+	return res
+}
+
+
+
+/*************************************************** editor: pages ***/
+
+function createPageIn(article, template){
+	if(article == null){
+		article = $('.current.page').parents('.article')
+	}
+	// no article
+	if(article.length == 0){
+		return
+	}
+	var res = createPage(template).appendTo(article)
+	$('.viewer').trigger('pageCreated', res)
+	return res
+}
+
+
+// XXX the next two are almost identical...
+// XXX prevent this from working outside of an article....
+function createPageAfter(page, template){
+	if(page == null){
+		page = $('.current.page')
+	}
+	var res = createPage(template).insertAfter(page)
+	$('.viewer').trigger('pageCreated', res)
+	return res
+}
+// XXX prevent this from working outside of an article....
+function createPageBefore(page, template){
+	if(page == null){
+		page = $('.current.page')
+	}
+	var res = createPage(template).insertBefore(page)
+	$('.viewer').trigger('pageCreated', res)
+	return res
+}
+
+
+// NOTE: on negative position this will position the element after the 
+// 		target, e.g. position -1 is the last element, etc.
+// XXX at this point there is no way to move something to either an 
+// 		article or a magazine that do not contain any pages directly...
+// 		...add special cases:
+// 			- if we are moving the page in the direction of an empty article
+// 			  push the page into the article...
+// 			- if we are moving page 0 left and the magazine has no cover 
+// 			  push it to the magazine...
+function movePageTo(page, position){
+	if(page == null){
+		page = $('.current.page')
+	}
+	if(position >= $('.page').length){
+		position = -1
+	}
+	var target = getPageAt(position)
+	page.detach()
+	if(position >= 0){
+			page.insertBefore(target)
+	} else {
+			page.insertAfter(target)
+	}
+	setCurrentPage()
+	$('.viewer').trigger('pageMoved', page)
+	return page
+}
+
+
+function shiftPageLeft(page){
+	if(page == null){
+		page = $('.current.page')
+	}
+	movePageTo(page, getPageNumber(page)-1)
+	return page
+}
+function shiftPageRight(page){
+	if(page == null){
+		page = $('.current.page')
+	}
+	movePageTo(page, getPageNumber(page)+2)
+	return page
+}
+
+
+function removePage(page){
+	if(page == null){
+		page = $('.current.page')
+	}
+
+	var cur = getPageNumber()
+	page.remove()
+	setCurrentPage(cur)
+	$('.viewer').trigger('pageRemoved', page)
+	return page
+}
+
+
+
+
+
+
+
+/*********************************************************************/
+// vim:set ts=4 sw=4 :
diff --git a/index.html b/index.html
index 07161a3..7225dd8 100755
--- a/index.html
+++ b/index.html
@@ -14,6 +14,7 @@
 
 
 
+
 
 
 
diff --git a/magazine.js b/magazine.js
index 192ae71..4f4e1ee 100755
--- a/magazine.js
+++ b/magazine.js
@@ -1017,7 +1017,7 @@ function createCoverPage(data){
 
 
 
-/*********************************************** editor: templates ***/
+/******************************************************* templates ***/
 
 // NOTE: for these to be self-aplicable they must only replace the content
 // 		of the matched elements and not touch the element itself.
@@ -1080,8 +1080,7 @@ function runMagazineTemplates(){
 }
 
 
-
-/************************************************ editor: magazine ***/
+/******************************************* basic magazine editor ***/
 
 // load the data...
 function loadMagazineData(mag){
@@ -1089,6 +1088,8 @@ function loadMagazineData(mag){
 	mag.appendTo($('.aligner'))
 	return mag
 }
+
+
 // load chrome elements like bookmarks and navigator....
 function loadMagazineChrome(position, bookmarks){
 	setupBookmarkTouchZones()
@@ -1104,23 +1105,6 @@ function loadMagazineChrome(position, bookmarks){
 	updateView()
 }
 
-// NOTE: we do not need to create any event handlers here specifically 
-// 		as all events are ahndled by the viewer...
-function loadMagazine(mag, position, bookmarks){
-	mag = loadMagazineData(mag)
-	loadMagazineChrome(position, bookmarks)
-	return mag
-}
-
-
-// NOTE: this will, in addition to the magazine itself, will populate with
-// 		the basic content (cover, article, article cover)
-function createBaseMagazine(title, cover, article){
-	removeMagazine()
-	var mag = loadMagazine(createMagazine(title, cover, article))
-	return mag
-}
-
 
 // XXX some things get really surprized when this is called, make things 
 // 		work with the mag cleared...
@@ -1134,169 +1118,5 @@ function removeMagazine(){
 
 
 
-/************************************************* editor: article ***/
-
-function createArticleBefore(article, title){
-	if(article == null){
-		article = $('.current.page').parents('.article')
-	}
-	// XXX fill the data...
-	var res = createArticle().insertBefore(article)
-	setCurrentPage()
-	$('.viewer').trigger('articleCreated', res)
-	return res
-}
-function createArticleAfter(article, title){
-	if(article == null){
-		article = $('.current.page').parents('.article')
-	}
-	// XXX fill the data...
-	var res = createArticle().insertAfter(article)
-	setCurrentPage()
-	$('.viewer').trigger('articleCreated', res)
-	return res
-}
-
-
-// XXX TEST!
-function shiftArticleLeft(article){
-	var articles = $('.article')
-	var i = articles.index(article)
-	if(i <= 0){
-		return article
-	}
-	var target = $(articles[i-1])
-	article
-		.detach()
-		.insertBefore(target)
-	setCurrentPage()
-	$('.viewer').trigger('articleMoved', res)
-	return res
-}
-// XXX TEST!
-function shiftArticleRight(article){
-	var articles = $('.article')
-	var i = articles.index(article)
-	if(i >= articles.length){
-		return article
-	}
-	var target = $(articles[i+1])
-	article
-		.detach()
-		.insertAfter(target)
-	setCurrentPage()
-	$('.viewer').trigger('articleMoved', res)
-	return res
-}
-
-
-function removeArticle(article){
-	if(article == null){
-		article = $('.current.page').parents('.article')
-	}
-	article.remove()
-	setCurrentPage()
-	$('.viewer').trigger('articleRemoved', res)
-	return res
-}
-
-
-
-/*************************************************** editor: pages ***/
-
-function createPageIn(article, template){
-	if(article == null){
-		article = $('.current.page').parents('.article')
-	}
-	// no article
-	if(article.length == 0){
-		return
-	}
-	var res = createPage(template).appendTo(article)
-	$('.viewer').trigger('pageCreated', res)
-	return res
-}
-
-
-// XXX the next two are almost identical...
-// XXX prevent this from working outside of an article....
-function createPageAfter(page, template){
-	if(page == null){
-		page = $('.current.page')
-	}
-	var res = createPage(template).insertAfter(page)
-	$('.viewer').trigger('pageCreated', res)
-	return res
-}
-// XXX prevent this from working outside of an article....
-function createPageBefore(page, template){
-	if(page == null){
-		page = $('.current.page')
-	}
-	var res = createPage(template).insertBefore(page)
-	$('.viewer').trigger('pageCreated', res)
-	return res
-}
-
-
-// NOTE: on negative position this will position the element after the 
-// 		target, e.g. position -1 is the last element, etc.
-// XXX at this point there is no way to move something to either an 
-// 		article or a magazine that do not contain any pages directly...
-// 		...add special cases:
-// 			- if we are moving the page in the direction of an empty article
-// 			  push the page into the article...
-// 			- if we are moving page 0 left and the magazine has no cover 
-// 			  push it to the magazine...
-function movePageTo(page, position){
-	if(page == null){
-		page = $('.current.page')
-	}
-	if(position >= $('.page').length){
-		position = -1
-	}
-	var target = getPageAt(position)
-	page.detach()
-	if(position >= 0){
-			page.insertBefore(target)
-	} else {
-			page.insertAfter(target)
-	}
-	setCurrentPage()
-	$('.viewer').trigger('pageMoved', page)
-	return page
-}
-
-
-function shiftPageLeft(page){
-	if(page == null){
-		page = $('.current.page')
-	}
-	movePageTo(page, getPageNumber(page)-1)
-	return page
-}
-function shiftPageRight(page){
-	if(page == null){
-		page = $('.current.page')
-	}
-	movePageTo(page, getPageNumber(page)+2)
-	return page
-}
-
-
-function removePage(page){
-	if(page == null){
-		page = $('.current.page')
-	}
-
-	var cur = getPageNumber()
-	page.remove()
-	setCurrentPage(cur)
-	$('.viewer').trigger('pageRemoved', page)
-	return page
-}
-
-
-
 /*********************************************************************/
 // vim:set ts=4 sw=4 :
diff --git a/navigator.js b/navigator.js
index 4360936..13b734b 100755
--- a/navigator.js
+++ b/navigator.js
@@ -2,6 +2,8 @@
 * 
 * Navigator 
 *
+* TODO make indicator dragable
+* TODO make the bar (indicator) clickable -- go to this point.
 *
 **********************************************************************/
 // NOTE: the navigator is not live and will need to get regenerated on