diff --git a/jspwiki-main/src/main/java/org/apache/wiki/filters/SpamFilter.java b/jspwiki-main/src/main/java/org/apache/wiki/filters/SpamFilter.java
index e58f7da..f6e3894 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/filters/SpamFilter.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/filters/SpamFilter.java
@@ -555,7 +555,7 @@
                 final String userAgent     = req.getHeader( "User-Agent" );
                 final String referrer      = req.getHeader( "Referer");
                 final String permalink     = context.getViewURL( context.getPage().getName() );
-                final String commentType   = ( ( WikiContext )context ).getRequestContext().equals( WikiContext.COMMENT ) ? "comment" : "edit";
+                final String commentType   = context.getRequestContext().equals( WikiContext.COMMENT ) ? "comment" : "edit";
                 final String commentAuthor = context.getCurrentUser().getName();
                 final String commentAuthorEmail = null;
                 final String commentAuthorURL   = null;
@@ -683,7 +683,7 @@
                 }
             }
 
-            final Attachment att = context.getEngine().getManager( AttachmentManager.class ).getAttachmentInfo( ( WikiContext )context, m_blacklist );
+            final Attachment att = context.getEngine().getManager( AttachmentManager.class ).getAttachmentInfo( context, m_blacklist );
             if( att != null ) {
                 if( m_spamPatterns == null || m_spamPatterns.isEmpty() || att.getLastModified().after( m_lastRebuild ) ) {
                     rebuild = true;
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/references/DefaultReferenceManager.java b/jspwiki-main/src/main/java/org/apache/wiki/references/DefaultReferenceManager.java
index 2467893..77df623 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/references/DefaultReferenceManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/references/DefaultReferenceManager.java
@@ -26,6 +26,7 @@
 import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.core.Context;
 import org.apache.wiki.api.core.Engine;
+import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.api.filters.BasePageFilter;
 import org.apache.wiki.api.providers.WikiProvider;
@@ -363,7 +364,7 @@
     /**
      *  Serializes hashmaps to disk.  The format is private, don't touch it.
      */
-    private synchronized void serializeAttrsToDisk( final WikiPage p ) {
+    private synchronized void serializeAttrsToDisk( final Page p ) {
         final StopWatch sw = new StopWatch();
         sw.start();
 
@@ -418,7 +419,7 @@
      */
     @Override
 	public void postSave( final Context context, final String content ) {
-        final WikiPage page = ( WikiPage )context.getPage();
+        final Page page = context.getPage();
         updateReferences( page.getName(), scanWikiLinks( page, content ) );
         serializeAttrsToDisk( page );
     }
@@ -431,7 +432,7 @@
      *  @return a Collection of Strings
      */
     @Override
-    public Collection< String > scanWikiLinks( final WikiPage page, final String pagedata ) {
+    public Collection< String > scanWikiLinks( final Page page, final String pagedata ) {
         final LinkCollector localCollector = new LinkCollector();
         m_engine.getManager( RenderingManager.class ).textToHTML( new WikiContext( m_engine, page ),
                                                                   pagedata,
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/references/ReferenceManager.java b/jspwiki-main/src/main/java/org/apache/wiki/references/ReferenceManager.java
index 5e97420..62de727 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/references/ReferenceManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/references/ReferenceManager.java
@@ -19,6 +19,7 @@
 package org.apache.wiki.references;
 
 import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.core.Page;
 import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.api.filters.PageFilter;
 import org.apache.wiki.event.WikiEventListener;
@@ -60,7 +61,7 @@
      *  @param pagedata The page contents
      *  @return a Collection of Strings
      */
-    Collection< String > scanWikiLinks( final WikiPage page, final String pagedata );
+    Collection< String > scanWikiLinks( final Page page, final String pagedata );
 
     /**
      * Updates the m_referedTo and m_referredBy hashmaps when a page has been deleted.
