diff --git a/.coveralls.yml b/.coveralls.yml
new file mode 100644
index 0000000000000000000000000000000000000000..25c43755574184d93d6830a129cafb8f23eac038
--- /dev/null
+++ b/.coveralls.yml
@@ -0,0 +1,4 @@
+coverage_clover: coverage.clover
+service_name: travis-ci
+src_dir: ./
+json_path: ./coveralls.json
diff --git a/.travis.yml b/.travis.yml
index 10ed0557f77384d5dc8a6b423f0f81fe89fb0cee..9a0196d1164e26a24793237db1bee21b084cc1e8 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,14 +1,24 @@
 sudo: false
 language: php
 php:
+  - 5.4
   - 5.5
   - 5.6
   - 7.0
+  - hhvm
 matrix:
   allow_failures:
     - php: hhvm
 before_script:
-  - composer install --no-interaction
+  - composer install --no-interaction --prefer-dist
 script:
   - vendor/bin/phpunit --coverage-clover=coverage.clover
   - vendor/bin/phpcs -p --standard=PSR2 --ignore=vendor/ ./
+after_script:
+  - vendor/bin/coveralls
+notifications:
+  webhooks:
+    urls:
+      - https://webhooks.gitter.im/e/81e47479feba5ba8dc47
+    on_success: change
+    on_start: never
diff --git a/composer.json b/composer.json
index 9cc54fc4271cba5768a7b777eab5db8632901d51..59e317dd767b0c8291798efc87f6e276c347d30b 100644
--- a/composer.json
+++ b/composer.json
@@ -17,7 +17,8 @@
     },
     "require-dev": {
         "phpunit/phpunit": "~4.4",
-        "squizlabs/php_codesniffer": "~2.0"
+        "squizlabs/php_codesniffer": "~2.0",
+        "satooshi/php-coveralls": "~0.7"
     },
     "autoload": {
         "psr-4": {