diff --git a/pre_commit_hooks/mixed_line_ending.py b/pre_commit_hooks/mixed_line_ending.py
index 90aef03..0ef8e2c 100644
--- a/pre_commit_hooks/mixed_line_ending.py
+++ b/pre_commit_hooks/mixed_line_ending.py
@@ -1,7 +1,3 @@
-from __future__ import absolute_import
-from __future__ import print_function
-from __future__ import unicode_literals
-
 import argparse
 import collections
 from typing import Dict
@@ -17,7 +13,7 @@
 FIX_TO_LINE_ENDING = {'cr': CR, 'crlf': CRLF, 'lf': LF}
 
 
-def _fix(filename, contents, ending):  # type: (str, bytes, bytes) -> None
+def _fix(filename: str, contents: bytes, ending: bytes) -> None:
     new_contents = b''.join(
         line.rstrip(b'\r\n') + ending for line in contents.splitlines(True)
     )
@@ -25,11 +21,11 @@
         f.write(new_contents)
 
 
-def fix_filename(filename, fix):  # type: (str, str) -> int
+def fix_filename(filename: str, fix: str) -> int:
     with open(filename, 'rb') as f:
         contents = f.read()
 
-    counts = collections.defaultdict(int)  # type: Dict[bytes, int]
+    counts: Dict[bytes, int] = collections.defaultdict(int)
 
     for line in contents.splitlines(True):
         for ending in ALL_ENDINGS:
@@ -66,7 +62,7 @@
         return other_endings
 
 
-def main(argv=None):  # type: (Optional[Sequence[str]]) -> int
+def main(argv: Optional[Sequence[str]] = None) -> int:
     parser = argparse.ArgumentParser()
     parser.add_argument(
         '-f', '--fix',
@@ -81,9 +77,9 @@
     for filename in args.filenames:
         if fix_filename(filename, args.fix):
             if args.fix == 'no':
-                print('{}: mixed line endings'.format(filename))
+                print(f'{filename}: mixed line endings')
             else:
-                print('{}: fixed mixed line endings'.format(filename))
+                print(f'{filename}: fixed mixed line endings')
             retv = 1
     return retv
 
