diff --git a/lib/src/rate_limiter.dart b/lib/src/rate_limiter.dart
index 20b58598..67897da6 100644
--- a/lib/src/rate_limiter.dart
+++ b/lib/src/rate_limiter.dart
@@ -1,5 +1,7 @@
 import 'dart:async';
 import 'package:angel_framework/angel_framework.dart';
+import 'package:angel_security/angel_security.dart';
+import 'rate_limiting_window.dart';
 
 /// A base class that facilitates rate limiting API's or endpoints,
 /// typically to prevent spam and abuse.
@@ -16,4 +18,21 @@ abstract class RateLimiter<User> {
   final Duration window;
 
   RateLimiter(this.maxRequestsPerWindow, this.window);
+
+  /// Computes the current window in which the user is acting.
+  /// 
+  /// For example, if your API was limited to 1000 requests/hour,
+  /// then you would return a window containing the current hour,
+  /// and the number of requests the user has sent in the past hour.
+  FutureOr<RateLimitingWindow<User>> getCurrentWindow(
+      RequestContext req, ResponseContext res);
+
+  /// Updates the underlying store with information about the
+  /// [newWindow] that the user is operating in.
+  FutureOr<void> updateCurrentWindow(RequestContext req, ResponseContext res,
+      RateLimitingWindow<User> newWindow);
+
+  FutureOr<Object> denyRequest(RequestContext req, ResponseContext res) {
+    
+  }
 }