diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2ff264d..18907e1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,7 +1,5 @@
 ## 0.17.2
 
-- Comma separate keyframe percentage lists.
-- Use lowercase `and` in media queries.
 - Fixed a crash caused by `min()`, `max()` and `clamp()` functions that contain
   mathematical expressions.
 
diff --git a/lib/src/css_printer.dart b/lib/src/css_printer.dart
index 1eac334..0f5b822 100644
--- a/lib/src/css_printer.dart
+++ b/lib/src/css_printer.dart
@@ -55,7 +55,7 @@
 
   @override
   void visitMediaExpression(MediaExpression node) {
-    emit(node.andOperator ? ' and ' : ' ');
+    emit(node.andOperator ? ' AND ' : ' ');
     emit('(${node.mediaFeature}');
     if (node.exprs.expressions.isNotEmpty) {
       emit(':');
@@ -612,7 +612,7 @@
     var expressions = node.expressions;
     var expressionsLength = expressions.length;
     for (var i = 0; i < expressionsLength; i++) {
-      // Add space separator between terms without an operator.
+      // Add space seperator between terms without an operator.
       // TODO(terry): Should have a BinaryExpression to solve this problem.
       var expression = expressions[i];
       if (i > 0 &&
@@ -624,9 +624,6 @@
         var previous = expressions[i - 1];
         if (previous is OperatorComma || previous is OperatorSlash) {
           emit(_sp);
-        } else if (previous is PercentageTerm && expression is PercentageTerm) {
-          emit(',');
-          emit(_sp);
         } else {
           emit(' ');
         }
diff --git a/lib/src/tree.dart b/lib/src/tree.dart
index 3c66ac7..3af71dc 100644
--- a/lib/src/tree.dart
+++ b/lib/src/tree.dart
@@ -716,7 +716,8 @@
 
   bool get hasUnary => _mediaUnary != -1;
   String get unary =>
-      TokenKind.idToValue(TokenKind.MEDIA_OPERATORS, _mediaUnary)!;
+      TokenKind.idToValue(TokenKind.MEDIA_OPERATORS, _mediaUnary)!
+          .toUpperCase();
 
   @override
   SourceSpan get span => super.span!;
diff --git a/pubspec.yaml b/pubspec.yaml
index e224b0a..a71911b 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -13,5 +13,4 @@
 dev_dependencies:
   path: ^1.8.0
   pedantic: ^1.10.0
-  term_glyph: ^1.2.0
   test: ^1.16.0
diff --git a/test/declaration_test.dart b/test/declaration_test.dart
index 64e84ce..6cccc9c 100644
--- a/test/declaration_test.dart
+++ b/test/declaration_test.dart
@@ -348,7 +348,7 @@
   }
 }''';
   var generated = '''
-@media screen and (-webkit-min-device-pixel-ratio:0) {
+@media screen AND (-webkit-min-device-pixel-ratio:0) {
 .todo-item .toggle {
   background: none;
 }
@@ -381,7 +381,7 @@
     }
   }''';
   generated =
-      '''@media handheld and (min-width:20em), screen and (min-width:20em) {
+      '''@media handheld AND (min-width:20em), screen AND (min-width:20em) {
 #id {
   color: #f00;
 }
@@ -389,12 +389,12 @@
   height: 20px;
 }
 }
-@media print and (min-resolution:300dpi) {
+@media print AND (min-resolution:300dpi) {
 #anotherId {
   color: #fff;
 }
 }
-@media print and (min-resolution:280dpcm) {
+@media print AND (min-resolution:280dpcm) {
 #finalId {
   color: #aaa;
 }
@@ -415,8 +415,8 @@
         font-size: 10em;
       }
     }''';
-  generated = '@media only screen and (min-device-width:4000px) '
-      'and (min-device-height:2000px), screen and (another:100px) {\n'
+  generated = '@media ONLY screen AND (min-device-width:4000px) '
+      'AND (min-device-height:2000px), screen AND (another:100px) {\n'
       'html {\n  font-size: 10em;\n}\n}';
 
   stylesheet = parseCss(input, errors: errors..clear(), opts: simpleOptions);
@@ -431,8 +431,8 @@
         font-size: 10em;
       }
     }''';
-  generated = '@media screen, print and (min-device-width:4000px) and '
-      '(min-device-height:2000px), screen and (another:100px) {\n'
+  generated = '@media screen, print AND (min-device-width:4000px) AND '
+      '(min-device-height:2000px), screen AND (another:100px) {\n'
       'html {\n  font-size: 10em;\n}\n}';
 
   stylesheet = parseCss(input, errors: errors..clear(), opts: simpleOptions);
@@ -442,8 +442,8 @@
 
   input = '''
 @import "test.css" ONLY screen, NOT print AND (min-device-width: 4000px);''';
-  generated = '@import "test.css" only screen, '
-      'not print and (min-device-width:4000px);';
+  generated = '@import "test.css" ONLY screen, '
+      'NOT print AND (min-device-width:4000px);';
 
   stylesheet = parseCss(input, errors: errors..clear(), opts: simpleOptions);
 
@@ -453,10 +453,10 @@
   var css = '@media (min-device-width:400px) {\n}';
   expectCss(css, css);
 
-  css = '@media all and (transform-3d), (-webkit-transform-3d) {\n}';
+  css = '@media all AND (tranform-3d), (-webkit-transform-3d) {\n}';
   expectCss(css, css);
 
-  // Test that 'and' operator is required between media type and expressions.
+  // Test that AND operator is required between media type and expressions.
   css = '@media screen (min-device-width:400px';
   stylesheet = parseCss(css, errors: errors..clear(), opts: simpleOptions);
   expect(errors, isNotEmpty);
@@ -862,7 +862,7 @@
       '@page{@top-left{color:red}}'
       '@page:first{}'
       '@page foo:first{}'
-      '@media screen and (max-width:800px){div{font-size:24px}}'
+      '@media screen AND (max-width:800px){div{font-size:24px}}'
       '@keyframes foo{0%{transform:scaleX(0)}}'
       'div{color:rgba(0,0,0,0.2)}';
 
diff --git a/test/error_test.dart b/test/error_test.dart
index 3543502..b6be913 100644
--- a/test/error_test.dart
+++ b/test/error_test.dart
@@ -131,6 +131,7 @@
   var input = '# foo { color: #ff00ff; }';
   parseCss(input, errors: errors);
 
+  expect(errors, isNotEmpty);
   expect(errors[0].toString(), '''
 error on line 1, column 1: Not a valid ID selector expected #id
   ,
diff --git a/test/keyframes_test.dart b/test/keyframes_test.dart
deleted file mode 100644
index 24a956c..0000000
--- a/test/keyframes_test.dart
+++ /dev/null
@@ -1,141 +0,0 @@
-library extend_test;
-
-import 'package:csslib/src/messages.dart';
-import 'package:test/test.dart';
-
-import 'testing.dart';
-
-void compileAndValidate(String input, String generated) {
-  var errors = <Message>[];
-  var stylesheet = compileCss(input, errors: errors, opts: options);
-  expect(errors.isEmpty, true, reason: errors.toString());
-  expect(prettyPrint(stylesheet), generated);
-}
-
-void singleKeyframesList() {
-  compileAndValidate(r'''
-@keyframes ping {
-  75%, 100% {
-    transform: scale(2);
-    opacity: 0;
-  }
-}''', r'''
-@keyframes ping {
-  75%, 100% {
-  transform: scale(2);
-  opacity: 0;
-  }
-}''');
-}
-
-void keyframesList() {
-  compileAndValidate(r'''
-@keyframes spin {
-  to {
-    transform: rotate(360deg);
-  }
-}
-@-webkit-keyframes ping {
-  75%, 100% {
-    transform: scale(2);
-    opacity: 0;
-  }
-}
-@keyframes ping {
-  75%, 100% {
-    transform: scale(2);
-    opacity: 0;
-  }
-}
-@-webkit-keyframes pulse {
-  50% {
-    opacity: 0.5;
-  }
-}
-@keyframes pulse {
-  50% {
-    opacity: 0.5;
-  }
-}
-@-webkit-keyframes bounce {
-  0%, 100% {
-    transform: translateY(-25%);
-    -webkit-animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
-    animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
-  }
-  50% {
-    transform: none;
-    -webkit-animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
-    animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
-  }
-}
-@keyframes bounce {
-  0%, 100% {
-    transform: translateY(-25%);
-    -webkit-animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
-    animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
-  }
-  50% {
-    transform: none;
-    -webkit-animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
-    animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
-  }
-}
-''', r'''
-@keyframes spin {
-  to {
-  transform: rotate(360deg);
-  }
-}
-@-webkit-keyframes ping {
-  75%, 100% {
-  transform: scale(2);
-  opacity: 0;
-  }
-}
-@keyframes ping {
-  75%, 100% {
-  transform: scale(2);
-  opacity: 0;
-  }
-}
-@-webkit-keyframes pulse {
-  50% {
-  opacity: 0.5;
-  }
-}
-@keyframes pulse {
-  50% {
-  opacity: 0.5;
-  }
-}
-@-webkit-keyframes bounce {
-  0%, 100% {
-  transform: translateY(-25%);
-  -webkit-animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
-  animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
-  }
-  50% {
-  transform: none;
-  -webkit-animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
-  animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
-  }
-}
-@keyframes bounce {
-  0%, 100% {
-  transform: translateY(-25%);
-  -webkit-animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
-  animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
-  }
-  50% {
-  transform: none;
-  -webkit-animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
-  animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
-  }
-}''');
-}
-
-void main() {
-  test('Single Keyframes List', singleKeyframesList);
-  test('Keyframes List', keyframesList);
-}
diff --git a/test/nested_test.dart b/test/nested_test.dart
index f099de8..a594969 100644
--- a/test/nested_test.dart
+++ b/test/nested_test.dart
@@ -353,7 +353,7 @@
   }
 }
 ''';
-  final generated = r'''@media screen and (-webkit-min-device-pixel-ratio:0) {
+  final generated = r'''@media screen AND (-webkit-min-device-pixel-ratio:0) {
 #toggle-all {
   image: url("test.jpb");
   color: #f00;
diff --git a/test/testing.dart b/test/testing.dart
index e41a810..2a51fdb 100644
--- a/test/testing.dart
+++ b/test/testing.dart
@@ -57,13 +57,13 @@
 
 /// Pretty printer for CSS.
 String prettyPrint(StyleSheet ss) {
-  // Walk the tree testing basic Visitor class.
+  // Walk the tree testing basic Vistor class.
   walkTree(ss);
   return (_emitCss..visitTree(ss, pretty: true)).toString();
 }
 
 /// Helper function to emit compact (non-pretty printed) CSS for suite test
-/// comparisons.  Spaces, new lines, etc. are reduced for easier comparisons of
+/// comparsions.  Spaces, new lines, etc. are reduced for easier comparsions of
 /// expected suite test results.
 String compactOutput(StyleSheet ss) {
   walkTree(ss);
