diff --git a/src/lookahead.rs b/src/lookahead.rs
index a63b9f2..15e0346 100644
--- a/src/lookahead.rs
+++ b/src/lookahead.rs
@@ -78,7 +78,7 @@
 impl<'a> Lookahead1<'a> {
     pub fn peek<T: Peek>(&self, token: T) -> bool {
         let _ = token;
-        if T::Token::peek(self) {
+        if T::Token::peek(self.cursor) {
             return true;
         }
         self.comparisons.borrow_mut().push(T::Token::display());
@@ -104,10 +104,6 @@
             }
         }
     }
-
-    pub fn cursor(&self) -> Cursor<'a> {
-        self.cursor
-    }
 }
 
 /// Types that can be parsed by looking at just one token.
@@ -136,8 +132,8 @@
     }
 }
 
-pub fn is_delimiter(lookahead: &Lookahead1, delimiter: Delimiter) -> bool {
-    lookahead.cursor.group(delimiter).is_some()
+pub fn is_delimiter(cursor: Cursor, delimiter: Delimiter) -> bool {
+    cursor.group(delimiter).is_some()
 }
 
 mod private {
diff --git a/src/parse.rs b/src/parse.rs
index b98361f..8c4a83d 100644
--- a/src/parse.rs
+++ b/src/parse.rs
@@ -343,7 +343,7 @@
 
 impl<T: Parse + Token> Parse for Option<T> {
     fn parse(input: ParseStream) -> Result<Self> {
-        if T::peek(&input.lookahead1()) {
+        if T::peek(input.cursor()) {
             Ok(Some(input.parse()?))
         } else {
             Ok(None)
diff --git a/src/punctuated.rs b/src/punctuated.rs
index 19fd6c6..fe29afb 100644
--- a/src/punctuated.rs
+++ b/src/punctuated.rs
@@ -704,7 +704,7 @@
         loop {
             let value = parser(input)?;
             punctuated.push_value(value);
-            if !P::peek(&input.lookahead1()) {
+            if !P::peek(input.cursor()) {
                 break;
             }
             let punct = input.parse()?;
diff --git a/src/token.rs b/src/token.rs
index 2e54077..68f9475 100644
--- a/src/token.rs
+++ b/src/token.rs
@@ -106,6 +106,8 @@
 use quote::{ToTokens, TokenStreamExt};
 
 #[cfg(feature = "parsing")]
+use buffer::Cursor;
+#[cfg(feature = "parsing")]
 use error::Result;
 #[cfg(any(feature = "full", feature = "derive"))]
 #[cfg(feature = "parsing")]
@@ -116,7 +118,7 @@
 #[cfg(feature = "parsing")]
 use lookahead;
 #[cfg(feature = "parsing")]
-use parse::{Lookahead1, Parse, ParseStream};
+use parse::{Parse, ParseStream};
 use span::IntoSpans;
 
 /// Marker trait for types that represent single tokens.
@@ -126,7 +128,7 @@
 pub trait Token: private::Sealed {
     // Not public API.
     #[doc(hidden)]
-    fn peek(lookahead: &Lookahead1) -> bool;
+    fn peek(cursor: Cursor) -> bool;
 
     // Not public API.
     #[doc(hidden)]
@@ -142,10 +144,9 @@
     ($name:ident $display:expr) => {
         #[cfg(feature = "parsing")]
         impl Token for $name {
-            fn peek(lookahead: &Lookahead1) -> bool {
+            fn peek(cursor: Cursor) -> bool {
                 // TODO factor out in a way that can be compiled just once
                 let scope = Span::call_site();
-                let cursor = lookahead.cursor();
                 let unexpected = Rc::new(Cell::new(None));
                 ::private::new_parse_buffer(scope, cursor, unexpected)
                     .parse::<Self>()
@@ -423,8 +424,8 @@
 
 #[cfg(feature = "parsing")]
 impl Token for Paren {
-    fn peek(lookahead: &Lookahead1) -> bool {
-        lookahead::is_delimiter(lookahead, Delimiter::Parenthesis)
+    fn peek(cursor: Cursor) -> bool {
+        lookahead::is_delimiter(cursor, Delimiter::Parenthesis)
     }
 
     fn display() -> String {
@@ -434,8 +435,8 @@
 
 #[cfg(feature = "parsing")]
 impl Token for Brace {
-    fn peek(lookahead: &Lookahead1) -> bool {
-        lookahead::is_delimiter(lookahead, Delimiter::Brace)
+    fn peek(cursor: Cursor) -> bool {
+        lookahead::is_delimiter(cursor, Delimiter::Brace)
     }
 
     fn display() -> String {
@@ -445,8 +446,8 @@
 
 #[cfg(feature = "parsing")]
 impl Token for Bracket {
-    fn peek(lookahead: &Lookahead1) -> bool {
-        lookahead::is_delimiter(lookahead, Delimiter::Bracket)
+    fn peek(cursor: Cursor) -> bool {
+        lookahead::is_delimiter(cursor, Delimiter::Bracket)
     }
 
     fn display() -> String {
@@ -456,8 +457,8 @@
 
 #[cfg(feature = "parsing")]
 impl Token for Group {
-    fn peek(lookahead: &Lookahead1) -> bool {
-        lookahead::is_delimiter(lookahead, Delimiter::None)
+    fn peek(cursor: Cursor) -> bool {
+        lookahead::is_delimiter(cursor, Delimiter::None)
     }
 
     fn display() -> String {
