diff --git a/.travis.yml b/.travis.yml
index 8681e29..f6e2d7b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,7 +1,7 @@
 language: dart
 
 dart:
-  - 2.0.0
+  - 2.1.0
   - dev
 
 dart_task:
@@ -12,7 +12,7 @@
   include:
     - dart: dev
       dartanalyzer: --fatal-infos --fatal-warnings .
-    - dart: stable
+    - dart: 2.1.0
       dartanalyzer: --fatal-warnings .
     - dart: dev
       dart_task: dartfmt
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 381b38a..bb8ea79 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,12 @@
+## 0.15.0
+
+- **BREAKING**
+  - Removed `css` executable from `bin` directory.
+  - Removed the deprecated `css.dart` library.
+  - `Message.level` is now of type `MessageLevel` defined in this package.
+- Removed dependencies on `package:args` and `package:logging`.
+- Require Dart SDK `>=2.1.0`.
+
 ## 0.14.6
 
 * Removed whitespace between comma-delimited expressions in compact output.
diff --git a/bin/css.dart b/bin/css.dart
deleted file mode 100644
index 1aae7a8..0000000
--- a/bin/css.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env dart
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// ignore: deprecated_member_use_from_same_package
-import 'package:csslib/css.dart' as css;
-
-void main(List<String> args) => css.main(args);
diff --git a/lib/css.dart b/lib/css.dart
deleted file mode 100644
index ac6510b..0000000
--- a/lib/css.dart
+++ /dev/null
@@ -1,146 +0,0 @@
-// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-@Deprecated('Will be removed in v0.15.0')
-library css;
-
-import 'dart:io';
-
-import 'package:args/args.dart';
-import 'package:path/path.dart' as path;
-import 'package:source_span/source_span.dart';
-
-import 'parser.dart';
-import 'src/messages.dart';
-import 'visitor.dart';
-
-void main(List<String> arguments) {
-  // TODO(jmesserly): fix this to return a proper exit code
-  var options = _parseOptions(arguments);
-  if (options == null) return;
-
-  messages = Messages(options: options);
-
-  _time('Total time spent on ${options.inputFile}', () {
-    _compile(options.inputFile, options.verbose);
-  }, true);
-}
-
-void _compile(String inputPath, bool verbose) {
-  var ext = path.extension(inputPath);
-  if (ext != '.css' && ext != '.scss') {
-    messages.error("Please provide a CSS/Sass file", null);
-    return;
-  }
-  try {
-    // Read the file.
-    var filename = path.basename(inputPath);
-    var contents = File(inputPath).readAsStringSync();
-    var file = SourceFile.fromString(contents, url: path.toUri(inputPath));
-
-    // Parse the CSS.
-    StyleSheet tree =
-        _time('Parse $filename', () => Parser(file, contents).parse(), verbose);
-
-    _time('Analyzer $filename', () => Analyzer([tree], messages), verbose)
-        .run();
-
-    // Emit the processed CSS.
-    var emitter = CssPrinter();
-    _time('Codegen $filename', () => emitter.visitTree(tree, pretty: true),
-        verbose);
-
-    // Write the contents to a file.
-    var outPath = path.join(path.dirname(inputPath), '_$filename');
-    File(outPath).writeAsStringSync(emitter.toString());
-  } catch (e) {
-    messages.error('error processing $inputPath. Original message:\n $e', null);
-  }
-}
-
-T _time<T>(String message, T Function() callback, bool printTime) {
-  if (!printTime) return callback();
-  final watch = Stopwatch();
-  watch.start();
-  var result = callback();
-  watch.stop();
-  final duration = watch.elapsedMilliseconds;
-  _printMessage(message, duration);
-  return result;
-}
-
-void _printMessage(String message, int duration) {
-  var buf = StringBuffer();
-  buf.write(message);
-  for (int i = message.length; i < 60; i++) buf.write(' ');
-  buf.write(' -- ');
-  if (duration < 10) buf.write(' ');
-  if (duration < 100) buf.write(' ');
-  buf..write(duration)..write(' ms');
-  print(buf.toString());
-}
-
-PreprocessorOptions _fromArgs(ArgResults args) => PreprocessorOptions(
-    warningsAsErrors: args['warnings_as_errors'],
-    throwOnWarnings: args['throw_on_warnings'],
-    throwOnErrors: args['throw_on_errors'],
-    verbose: args['verbose'],
-    checked: args['checked'],
-    lessSupport: args['less'],
-    useColors: args['colors'],
-    polyfill: args['polyfill'],
-    inputFile: args.rest.isNotEmpty ? args.rest[0] : null);
-
-// tool.dart [options...] <css file>
-PreprocessorOptions _parseOptions(List<String> arguments) {
-  var parser = ArgParser()
-    ..addFlag('verbose',
-        abbr: 'v',
-        defaultsTo: false,
-        negatable: false,
-        help: 'Display detail info')
-    ..addFlag('checked',
-        defaultsTo: false,
-        negatable: false,
-        help: 'Validate CSS values invalid value display a warning message')
-    ..addFlag('less',
-        defaultsTo: true,
-        negatable: true,
-        help: 'Supports subset of Less syntax')
-    ..addFlag('suppress_warnings',
-        defaultsTo: true, help: 'Warnings not displayed')
-    ..addFlag('warnings_as_errors',
-        defaultsTo: false, help: 'Warning handled as errors')
-    ..addFlag('throw_on_errors',
-        defaultsTo: false, help: 'Throw on errors encountered')
-    ..addFlag('throw_on_warnings',
-        defaultsTo: false, help: 'Throw on warnings encountered')
-    ..addFlag('colors',
-        defaultsTo: true, help: 'Display errors/warnings in colored text')
-    ..addFlag('polyfill',
-        defaultsTo: false, help: 'Generate polyfill for new CSS features')
-    ..addFlag('help',
-        abbr: 'h',
-        defaultsTo: false,
-        negatable: false,
-        help: 'Displays this help message');
-
-  try {
-    var results = parser.parse(arguments);
-    if (results['help'] || results.rest.isEmpty) {
-      _showUsage(parser);
-      return null;
-    }
-    return _fromArgs(results);
-  } on FormatException catch (e) {
-    print(e.message);
-    _showUsage(parser);
-    return null;
-  }
-}
-
-void _showUsage(ArgParser parser) {
-  print('Usage: css [options...] input.css');
-  print(parser.usage);
-}
diff --git a/lib/parser.dart b/lib/parser.dart
index 7680683..5fca910 100644
--- a/lib/parser.dart
+++ b/lib/parser.dart
@@ -2,26 +2,24 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-library csslib.parser;
-
 import 'dart:math' as math;
 
 import 'package:source_span/source_span.dart';
 
 import 'src/messages.dart';
-import 'src/options.dart';
+import 'src/preprocessor_options.dart';
 import 'visitor.dart';
 
-export 'src/messages.dart' show Message;
-export 'src/options.dart';
+export 'src/messages.dart' show Message, MessageLevel;
+export 'src/preprocessor_options.dart';
 
 part 'src/analyzer.dart';
 part 'src/polyfill.dart';
 part 'src/property.dart';
 part 'src/token.dart';
-part 'src/tokenizer_base.dart';
+part 'src/token_kind.dart';
 part 'src/tokenizer.dart';
-part 'src/tokenkind.dart';
+part 'src/tokenizer_base.dart';
 
 enum ClauseType {
   none,
diff --git a/lib/src/analyzer.dart b/lib/src/analyzer.dart
index 6421c6e..5f34da5 100644
--- a/lib/src/analyzer.dart
+++ b/lib/src/analyzer.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-part of csslib.parser;
+part of '../parser.dart';
 
 // TODO(terry): Add optimizing phase to remove duplicated selectors in the same
 //              selector group (e.g., .btn, .btn { color: red; }).  Also, look
diff --git a/lib/src/css_printer.dart b/lib/src/css_printer.dart
index 552f25e..a95fa34 100644
--- a/lib/src/css_printer.dart
+++ b/lib/src/css_printer.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-part of csslib.visitor;
+part of '../visitor.dart';
 
 /// Visitor that produces a formatted string representation of the CSS tree.
 class CssPrinter extends Visitor {
diff --git a/lib/src/messages.dart b/lib/src/messages.dart
index 17d1acf..edc72d8 100644
--- a/lib/src/messages.dart
+++ b/lib/src/messages.dart
@@ -2,12 +2,11 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-library csslib.src.messages;
-
-import 'package:logging/logging.dart' show Level;
 import 'package:source_span/source_span.dart';
 
-import 'options.dart';
+import 'preprocessor_options.dart';
+
+enum MessageLevel { info, warning, severe }
 
 // TODO(terry): Remove the global messages, use some object that tracks
 //              compilation state.
@@ -16,32 +15,28 @@
 Messages messages;
 
 // Color constants used for generating messages.
-final String GREEN_COLOR = '\u001b[32m';
-final String RED_COLOR = '\u001b[31m';
-final String MAGENTA_COLOR = '\u001b[35m';
-final String NO_COLOR = '\u001b[0m';
+const _greenColor = '\u001b[32m';
+const _redColor = '\u001b[31m';
+const _magentaColor = '\u001b[35m';
+const _noColor = '\u001b[0m';
 
 /// Map between error levels and their display color.
-final Map<Level, String> _ERROR_COLORS = (() {
-  var colorsMap = Map<Level, String>();
-  colorsMap[Level.SEVERE] = RED_COLOR;
-  colorsMap[Level.WARNING] = MAGENTA_COLOR;
-  colorsMap[Level.INFO] = GREEN_COLOR;
-  return colorsMap;
-})();
+const Map<MessageLevel, String> _errorColors = {
+  MessageLevel.severe: _redColor,
+  MessageLevel.warning: _magentaColor,
+  MessageLevel.info: _greenColor,
+};
 
 /// Map between error levels and their friendly name.
-final Map<Level, String> _ERROR_LABEL = (() {
-  var labels = Map<Level, String>();
-  labels[Level.SEVERE] = 'error';
-  labels[Level.WARNING] = 'warning';
-  labels[Level.INFO] = 'info';
-  return labels;
-})();
+const Map<MessageLevel, String> _errorLabel = {
+  MessageLevel.severe: 'error',
+  MessageLevel.warning: 'warning',
+  MessageLevel.info: 'info',
+};
 
 /// A single message from the compiler.
 class Message {
-  final Level level;
+  final MessageLevel level;
   final String message;
   final SourceSpan span;
   final bool useColors;
@@ -52,11 +47,11 @@
 
   String toString() {
     var output = StringBuffer();
-    bool colors = useColors && _ERROR_COLORS.containsKey(level);
-    var levelColor = colors ? _ERROR_COLORS[level] : null;
+    bool colors = useColors && _errorColors.containsKey(level);
+    var levelColor = colors ? _errorColors[level] : null;
     if (colors) output.write(levelColor);
-    output..write(_ERROR_LABEL[level])..write(' ');
-    if (colors) output.write(NO_COLOR);
+    output..write(_errorLabel[level])..write(' ');
+    if (colors) output.write(_noColor);
 
     if (span == null) {
       output.write(message);
@@ -69,13 +64,11 @@
   }
 }
 
-typedef PrintHandler = void Function(Message obj);
-
 /// This class tracks and prints information, warnings, and errors emitted by
 /// the compiler.
 class Messages {
   /// Called on every error. Set to blank function to supress printing.
-  final PrintHandler printHandler;
+  final void Function(Message obj) printHandler;
 
   final PreprocessorOptions options;
 
@@ -86,7 +79,7 @@
 
   /// Report a compile-time CSS error.
   void error(String message, SourceSpan span) {
-    var msg = Message(Level.SEVERE, message,
+    var msg = Message(MessageLevel.severe, message,
         span: span, useColors: options.useColors);
 
     messages.add(msg);
@@ -99,7 +92,7 @@
     if (options.warningsAsErrors) {
       error(message, span);
     } else {
-      var msg = Message(Level.WARNING, message,
+      var msg = Message(MessageLevel.warning, message,
           span: span, useColors: options.useColors);
 
       messages.add(msg);
@@ -108,8 +101,8 @@
 
   /// Report and informational message about what the compiler is doing.
   void info(String message, SourceSpan span) {
-    var msg =
-        Message(Level.INFO, message, span: span, useColors: options.useColors);
+    var msg = Message(MessageLevel.info, message,
+        span: span, useColors: options.useColors);
 
     messages.add(msg);
 
@@ -120,7 +113,8 @@
   void mergeMessages(Messages newMessages) {
     messages.addAll(newMessages.messages);
     newMessages.messages
-        .where((message) => message.level == Level.SEVERE || options.verbose)
+        .where((message) =>
+            message.level == MessageLevel.severe || options.verbose)
         .forEach(printHandler);
   }
 }
diff --git a/lib/src/polyfill.dart b/lib/src/polyfill.dart
index c8a01f1..d9c1b73 100644
--- a/lib/src/polyfill.dart
+++ b/lib/src/polyfill.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-part of csslib.parser;
+part of '../parser.dart';
 
 /// CSS polyfill emits CSS to be understood by older parsers that which do not
 /// understand (var, calc, etc.).
diff --git a/lib/src/options.dart b/lib/src/preprocessor_options.dart
similarity index 97%
rename from lib/src/options.dart
rename to lib/src/preprocessor_options.dart
index 3300cf6..8df2680 100644
--- a/lib/src/options.dart
+++ b/lib/src/preprocessor_options.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-library csslib.src.options;
-
 class PreprocessorOptions {
   /// Generate polyfill code (e.g., var, etc.)
   final bool polyfill;
diff --git a/lib/src/property.dart b/lib/src/property.dart
index de74760..01fc96b 100644
--- a/lib/src/property.dart
+++ b/lib/src/property.dart
@@ -4,7 +4,7 @@
 
 /// Representations of CSS styles.
 
-part of csslib.parser;
+part of '../parser.dart';
 
 // TODO(terry): Prune down this file we do need some of the code in this file
 //              for darker, lighter, how to represent a Font, etc but alot of
diff --git a/lib/src/token.dart b/lib/src/token.dart
index 873c217..f29850f 100644
--- a/lib/src/token.dart
+++ b/lib/src/token.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-part of csslib.parser;
+part of '../parser.dart';
 
 /// A single token in the Dart language.
 class Token {
diff --git a/lib/src/tokenkind.dart b/lib/src/token_kind.dart
similarity index 99%
rename from lib/src/tokenkind.dart
rename to lib/src/token_kind.dart
index af6233e..ec92170 100644
--- a/lib/src/tokenkind.dart
+++ b/lib/src/token_kind.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-part of csslib.parser;
+part of '../parser.dart';
 
 // TODO(terry): Need to be consistent with tokens either they're ASCII tokens
 //              e.g., ASTERISK or they're CSS e.g., PSEUDO, COMBINATOR_*.
diff --git a/lib/src/tokenizer.dart b/lib/src/tokenizer.dart
index a09e306..724f5b7 100644
--- a/lib/src/tokenizer.dart
+++ b/lib/src/tokenizer.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-part of csslib.parser;
+part of '../parser.dart';
 
 class Tokenizer extends TokenizerBase {
   /// U+ prefix for unicode characters.
diff --git a/lib/src/tokenizer_base.dart b/lib/src/tokenizer_base.dart
index a856727..a12471d 100644
--- a/lib/src/tokenizer_base.dart
+++ b/lib/src/tokenizer_base.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 // Generated by scripts/tokenizer_gen.py.
 
-part of csslib.parser;
+part of '../parser.dart';
 
 /// Tokenizer state to support look ahead for Less' nested selectors.
 class TokenizerState {
diff --git a/lib/src/tree.dart b/lib/src/tree.dart
index fa66422..be5aff1 100644
--- a/lib/src/tree.dart
+++ b/lib/src/tree.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-part of csslib.visitor;
+part of '../visitor.dart';
 
 /////////////////////////////////////////////////////////////////////////
 // CSS specific types:
diff --git a/lib/src/tree_base.dart b/lib/src/tree_base.dart
index 8338ad3..d8fee1d 100644
--- a/lib/src/tree_base.dart
+++ b/lib/src/tree_base.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-part of csslib.visitor;
+part of '../visitor.dart';
 
 /// The base type for all nodes in a CSS abstract syntax tree.
 abstract class TreeNode {
diff --git a/lib/src/tree_printer.dart b/lib/src/tree_printer.dart
index 2371015..6ed6962 100644
--- a/lib/src/tree_printer.dart
+++ b/lib/src/tree_printer.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-part of csslib.visitor;
+part of '../visitor.dart';
 
 // TODO(terry): Enable class for debug only; when conditional imports enabled.
 
diff --git a/lib/src/validate.dart b/lib/src/validate.dart
index 6e903b6..e6d66f2 100644
--- a/lib/src/validate.dart
+++ b/lib/src/validate.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-library csslib.src.validate;
-
 import 'package:csslib/visitor.dart';
 import 'package:source_span/source_span.dart';
 
diff --git a/lib/visitor.dart b/lib/visitor.dart
index 7b411cd..e21cff7 100644
--- a/lib/visitor.dart
+++ b/lib/visitor.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-library csslib.visitor;
-
 import 'package:source_span/source_span.dart';
 import 'parser.dart';
 
diff --git a/pubspec.yaml b/pubspec.yaml
index c928dbd..2922e0b 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,17 +1,14 @@
 name: csslib
-version: 0.14.6
+version: 0.15.0-dev
 
 description: A library for parsing CSS.
 author: Dart Team <misc@dartlang.org>
 homepage: https://github.com/dart-lang/csslib
 
 environment:
-  sdk: '>=2.0.0 <3.0.0'
+  sdk: '>=2.1.0 <3.0.0'
 
 dependencies:
-  args: ^1.4.3
-  logging: ^0.11.3
-  path: ^1.6.1
   source_span: ^1.4.0
 
 dev_dependencies:
diff --git a/test/testing.dart b/test/testing.dart
index 28b707d..345e5b6 100644
--- a/test/testing.dart
+++ b/test/testing.dart
@@ -8,9 +8,9 @@
 import 'package:csslib/parser.dart';
 import 'package:csslib/visitor.dart';
 import 'package:csslib/src/messages.dart';
-import 'package:csslib/src/options.dart';
+import 'package:csslib/src/preprocessor_options.dart';
 
-export 'package:csslib/src/options.dart';
+export 'package:csslib/src/preprocessor_options.dart';
 
 const simpleOptionsWithCheckedAndWarningsAsErrors = PreprocessorOptions(
     useColors: false,
