Index: composer.json
===================================================================
--- /dev/null
+++ composer.json
@@ -0,0 +1,11 @@
+{
+	"require-dev": {
+		"aik099/phpunit-mink": "~2.0",
+		"qa-tools/qa-tools": "~1.0",
+		"aik099/coding-standard": "dev-in-portal",
+		"mockery/mockery": "~0.9",
+
+		"behat/mink-selenium2-driver": "~1.2",
+		"mindplay/annotations": "~1.2@dev"
+	}
+}
Index: composer.lock
===================================================================
--- /dev/null
+++ composer.lock
@@ -0,0 +1,1377 @@
+{
+    "_readme": [
+        "This file locks the dependencies of your project to a known state",
+        "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
+        "This file is @generated automatically"
+    ],
+    "hash": "5d82992cf53c3b16d1fb33e3d7b47124",
+    "packages": [],
+    "packages-dev": [
+        {
+            "name": "aik099/coding-standard",
+            "version": "dev-in-portal",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/aik099/CodingStandard.git",
+                "reference": "c627526ce12d8541f2389b959b62fb963286d3a3"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/aik099/CodingStandard/zipball/c627526ce12d8541f2389b959b62fb963286d3a3",
+                "reference": "c627526ce12d8541f2389b959b62fb963286d3a3",
+                "shasum": ""
+            },
+            "require-dev": {
+                "squizlabs/php_codesniffer": "~1.5"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Alexander Obuhovich",
+                    "email": "aik.bold@gmail.com"
+                }
+            ],
+            "description": "The PHP_CodeSniffer coding standard I'm using on all of my projects.",
+            "keywords": [
+                "PHP_CodeSniffer",
+                "codesniffer"
+            ],
+            "time": "2014-10-22 13:55:02"
+        },
+        {
+            "name": "aik099/phpunit-mink",
+            "version": "v2.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/aik099/phpunit-mink.git",
+                "reference": "2ef91f638cb7d9a30fdc505f6ff0870a450a1eb5"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/aik099/phpunit-mink/zipball/2ef91f638cb7d9a30fdc505f6ff0870a450a1eb5",
+                "reference": "2ef91f638cb7d9a30fdc505f6ff0870a450a1eb5",
+                "shasum": ""
+            },
+            "require": {
+                "behat/mink": "~1.5@dev",
+                "behat/mink-selenium2-driver": "~1.1@dev",
+                "php": ">=5.3.2",
+                "phpunit/phpunit": ">=3.7.8",
+                "pimple/pimple": "~2.0",
+                "symfony/event-dispatcher": "~2.4"
+            },
+            "require-dev": {
+                "aik099/coding-standard": "dev-master",
+                "mockery/mockery": "~0.9"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "aik099\\": "./library/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Alexander Obuhovich",
+                    "email": "aik.bold@gmail.com"
+                }
+            ],
+            "description": "Library for using Mink in PHPUnit tests. Supports session sharing between tests in a test case.",
+            "homepage": "http://github.com/aik099/phpunit-mink",
+            "keywords": [
+                "BrowserStack",
+                "Mink",
+                "Sauce",
+                "SauceLabs",
+                "phpunit",
+                "selenium",
+                "tests"
+            ],
+            "time": "2014-08-09 12:13:08"
+        },
+        {
+            "name": "behat/mink",
+            "version": "v1.6.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Behat/Mink.git",
+                "reference": "090900a0049c441f1e072bbd837db4079b2250c5"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Behat/Mink/zipball/090900a0049c441f1e072bbd837db4079b2250c5",
+                "reference": "090900a0049c441f1e072bbd837db4079b2250c5",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.1",
+                "symfony/css-selector": "~2.0"
+            },
+            "suggest": {
+                "behat/mink-browserkit-driver": "extremely fast headless driver for Symfony\\Kernel-based apps (Sf2, Silex)",
+                "behat/mink-goutte-driver": "fast headless driver for any app without JS emulation",
+                "behat/mink-selenium2-driver": "slow, but JS-enabled driver for any app (requires Selenium2)",
+                "behat/mink-zombie-driver": "fast and JS-enabled headless driver for any app (requires node.js)"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.6.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Behat\\Mink": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Konstantin Kudryashov",
+                    "email": "ever.zet@gmail.com",
+                    "homepage": "http://everzet.com"
+                }
+            ],
+            "description": "Web acceptance testing framework for PHP 5.3",
+            "homepage": "http://mink.behat.org/",
+            "keywords": [
+                "browser",
+                "testing",
+                "web"
+            ],
+            "time": "2014-09-26 09:25:05"
+        },
+        {
+            "name": "behat/mink-selenium2-driver",
+            "version": "v1.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Behat/MinkSelenium2Driver.git",
+                "reference": "8018fee80bf6573f909ece3e0dfc07d0eb352210"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Behat/MinkSelenium2Driver/zipball/8018fee80bf6573f909ece3e0dfc07d0eb352210",
+                "reference": "8018fee80bf6573f909ece3e0dfc07d0eb352210",
+                "shasum": ""
+            },
+            "require": {
+                "behat/mink": "~1.6@dev",
+                "instaclick/php-webdriver": "~1.1",
+                "php": ">=5.3.1"
+            },
+            "type": "mink-driver",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.2.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Behat\\Mink\\Driver": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Konstantin Kudryashov",
+                    "email": "ever.zet@gmail.com",
+                    "homepage": "http://everzet.com"
+                },
+                {
+                    "name": "Pete Otaqui",
+                    "email": "pete@otaqui.com",
+                    "homepage": "https://github.com/pete-otaqui"
+                }
+            ],
+            "description": "Selenium2 (WebDriver) driver for Mink framework",
+            "homepage": "http://mink.behat.org/",
+            "keywords": [
+                "ajax",
+                "browser",
+                "javascript",
+                "selenium",
+                "testing",
+                "webdriver"
+            ],
+            "time": "2014-09-29 13:12:12"
+        },
+        {
+            "name": "doctrine/instantiator",
+            "version": "1.0.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/doctrine/instantiator.git",
+                "reference": "f976e5de371104877ebc89bd8fecb0019ed9c119"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f976e5de371104877ebc89bd8fecb0019ed9c119",
+                "reference": "f976e5de371104877ebc89bd8fecb0019ed9c119",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3,<8.0-DEV"
+            },
+            "require-dev": {
+                "athletic/athletic": "~0.1.8",
+                "ext-pdo": "*",
+                "ext-phar": "*",
+                "phpunit/phpunit": "~4.0",
+                "squizlabs/php_codesniffer": "2.0.*@ALPHA"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Doctrine\\Instantiator\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Marco Pivetta",
+                    "email": "ocramius@gmail.com",
+                    "homepage": "http://ocramius.github.com/"
+                }
+            ],
+            "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+            "homepage": "https://github.com/doctrine/instantiator",
+            "keywords": [
+                "constructor",
+                "instantiate"
+            ],
+            "time": "2014-10-13 12:58:55"
+        },
+        {
+            "name": "instaclick/php-webdriver",
+            "version": "1.4.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/instaclick/php-webdriver.git",
+                "reference": "a57b2bcd9467e217134a2248b261b8b3a90ccea0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/instaclick/php-webdriver/zipball/a57b2bcd9467e217134a2248b261b8b3a90ccea0",
+                "reference": "a57b2bcd9467e217134a2248b261b8b3a90ccea0",
+                "shasum": ""
+            },
+            "require": {
+                "ext-curl": "*",
+                "php": ">=5.3.2"
+            },
+            "require-dev": {
+                "satooshi/php-coveralls": "dev-master"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "WebDriver": "lib/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "Apache-2.0"
+            ],
+            "authors": [
+                {
+                    "name": "Justin Bishop",
+                    "email": "jubishop@gmail.com",
+                    "role": "Developer"
+                },
+                {
+                    "name": "Anthon Pang",
+                    "email": "apang@softwaredevelopment.ca",
+                    "role": "Fork Maintainer"
+                }
+            ],
+            "description": "PHP WebDriver for Selenium 2",
+            "homepage": "http://instaclick.com/",
+            "keywords": [
+                "browser",
+                "selenium",
+                "webdriver",
+                "webtest"
+            ],
+            "time": "2014-05-12 21:03:05"
+        },
+        {
+            "name": "mindplay/annotations",
+            "version": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-annotations/php-annotations.git",
+                "reference": "404b63f180b9c1fa578c9da5ea39846ee0c430e1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-annotations/php-annotations/zipball/404b63f180b9c1fa578c9da5ea39846ee0c430e1",
+                "reference": "404b63f180b9c1fa578c9da5ea39846ee0c430e1",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/php-code-coverage": "~1.2.1",
+                "phpunit/php-file-iterator": ">=1.3.0@stable"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.2.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "mindplay\\annotations\\": "src\\annotations"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "LGPL-3.0+"
+            ],
+            "authors": [
+                {
+                    "name": "Rasmus Schultz",
+                    "email": "rasmus@mindplay.dk"
+                }
+            ],
+            "description": "Source-code annotations for PHP",
+            "homepage": "http://blog.mindplay.dk/",
+            "keywords": [
+                "annotations",
+                "framework"
+            ],
+            "time": "2014-09-07 08:45:38"
+        },
+        {
+            "name": "mockery/mockery",
+            "version": "0.9.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/padraic/mockery.git",
+                "reference": "95a4855380dc70176c51807c678fb3bd6198529a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/padraic/mockery/zipball/95a4855380dc70176c51807c678fb3bd6198529a",
+                "reference": "95a4855380dc70176c51807c678fb3bd6198529a",
+                "shasum": ""
+            },
+            "require": {
+                "lib-pcre": ">=7.0",
+                "php": ">=5.3.2"
+            },
+            "require-dev": {
+                "hamcrest/hamcrest-php": "~1.1",
+                "phpunit/phpunit": "~4.0",
+                "satooshi/php-coveralls": "~0.7@dev"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "0.9.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Mockery": "library/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Pádraic Brady",
+                    "email": "padraic.brady@gmail.com",
+                    "homepage": "http://blog.astrumfutura.com"
+                },
+                {
+                    "name": "Dave Marshall",
+                    "email": "dave.marshall@atstsolutions.co.uk",
+                    "homepage": "http://davedevelopment.co.uk"
+                }
+            ],
+            "description": "Mockery is a simple yet flexible PHP mock object framework for use in unit testing with PHPUnit, PHPSpec or any other testing framework. Its core goal is to offer a test double framework with a succint API capable of clearly defining all possible object operations and interactions using a human readable Domain Specific Language (DSL). Designed as a drop in alternative to PHPUnit's phpunit-mock-objects library, Mockery is easy to integrate with PHPUnit and can operate alongside phpunit-mock-objects without the World ending.",
+            "homepage": "http://github.com/padraic/mockery",
+            "keywords": [
+                "BDD",
+                "TDD",
+                "library",
+                "mock",
+                "mock objects",
+                "mockery",
+                "stub",
+                "test",
+                "test double",
+                "testing"
+            ],
+            "time": "2014-09-03 10:11:10"
+        },
+        {
+            "name": "phpunit/php-code-coverage",
+            "version": "2.0.11",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+                "reference": "53603b3c995f5aab6b59c8e08c3a663d2cc810b7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/53603b3c995f5aab6b59c8e08c3a663d2cc810b7",
+                "reference": "53603b3c995f5aab6b59c8e08c3a663d2cc810b7",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3",
+                "phpunit/php-file-iterator": "~1.3",
+                "phpunit/php-text-template": "~1.2",
+                "phpunit/php-token-stream": "~1.3",
+                "sebastian/environment": "~1.0",
+                "sebastian/version": "~1.0"
+            },
+            "require-dev": {
+                "ext-xdebug": ">=2.1.4",
+                "phpunit/phpunit": "~4.1"
+            },
+            "suggest": {
+                "ext-dom": "*",
+                "ext-xdebug": ">=2.2.1",
+                "ext-xmlwriter": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                ""
+            ],
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+            "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+            "keywords": [
+                "coverage",
+                "testing",
+                "xunit"
+            ],
+            "time": "2014-08-31 06:33:04"
+        },
+        {
+            "name": "phpunit/php-file-iterator",
+            "version": "1.3.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+                "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/acd690379117b042d1c8af1fafd61bde001bf6bb",
+                "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "File/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                ""
+            ],
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+            "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+            "keywords": [
+                "filesystem",
+                "iterator"
+            ],
+            "time": "2013-10-10 15:34:57"
+        },
+        {
+            "name": "phpunit/php-text-template",
+            "version": "1.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-text-template.git",
+                "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/206dfefc0ffe9cebf65c413e3d0e809c82fbf00a",
+                "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "Text/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                ""
+            ],
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Simple template engine.",
+            "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+            "keywords": [
+                "template"
+            ],
+            "time": "2014-01-30 17:20:04"
+        },
+        {
+            "name": "phpunit/php-timer",
+            "version": "1.0.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-timer.git",
+                "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/19689d4354b295ee3d8c54b4f42c3efb69cbc17c",
+                "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "PHP/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                ""
+            ],
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Utility class for timing",
+            "homepage": "https://github.com/sebastianbergmann/php-timer/",
+            "keywords": [
+                "timer"
+            ],
+            "time": "2013-08-02 07:42:54"
+        },
+        {
+            "name": "phpunit/php-token-stream",
+            "version": "1.3.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-token-stream.git",
+                "reference": "f8d5d08c56de5cfd592b3340424a81733259a876"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/f8d5d08c56de5cfd592b3340424a81733259a876",
+                "reference": "f8d5d08c56de5cfd592b3340424a81733259a876",
+                "shasum": ""
+            },
+            "require": {
+                "ext-tokenizer": "*",
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.3-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Wrapper around PHP's tokenizer extension.",
+            "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+            "keywords": [
+                "tokenizer"
+            ],
+            "time": "2014-08-31 06:12:13"
+        },
+        {
+            "name": "phpunit/phpunit",
+            "version": "4.3.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/phpunit.git",
+                "reference": "23e4e0310f037aae873cc81b8658dbbb82878f71"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/23e4e0310f037aae873cc81b8658dbbb82878f71",
+                "reference": "23e4e0310f037aae873cc81b8658dbbb82878f71",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-json": "*",
+                "ext-pcre": "*",
+                "ext-reflection": "*",
+                "ext-spl": "*",
+                "php": ">=5.3.3",
+                "phpunit/php-code-coverage": "~2.0",
+                "phpunit/php-file-iterator": "~1.3.2",
+                "phpunit/php-text-template": "~1.2",
+                "phpunit/php-timer": "~1.0.2",
+                "phpunit/phpunit-mock-objects": "~2.3",
+                "sebastian/comparator": "~1.0",
+                "sebastian/diff": "~1.1",
+                "sebastian/environment": "~1.0",
+                "sebastian/exporter": "~1.0",
+                "sebastian/version": "~1.0",
+                "symfony/yaml": "~2.0"
+            },
+            "suggest": {
+                "phpunit/php-invoker": "~1.1"
+            },
+            "bin": [
+                "phpunit"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.3.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                "",
+                "../../symfony/yaml/"
+            ],
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "The PHP Unit Testing framework.",
+            "homepage": "http://www.phpunit.de/",
+            "keywords": [
+                "phpunit",
+                "testing",
+                "xunit"
+            ],
+            "time": "2014-10-22 11:43:12"
+        },
+        {
+            "name": "phpunit/phpunit-mock-objects",
+            "version": "2.3.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
+                "reference": "c63d2367247365f688544f0d500af90a11a44c65"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/c63d2367247365f688544f0d500af90a11a44c65",
+                "reference": "c63d2367247365f688544f0d500af90a11a44c65",
+                "shasum": ""
+            },
+            "require": {
+                "doctrine/instantiator": "~1.0,>=1.0.1",
+                "php": ">=5.3.3",
+                "phpunit/php-text-template": "~1.2"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.3"
+            },
+            "suggest": {
+                "ext-soap": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Mock Object library for PHPUnit",
+            "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
+            "keywords": [
+                "mock",
+                "xunit"
+            ],
+            "time": "2014-10-03 05:12:11"
+        },
+        {
+            "name": "pimple/pimple",
+            "version": "v2.1.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/fabpot/Pimple.git",
+                "reference": "ea22fb2880faf7b7b0e17c9809c6fe25b071fd76"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/fabpot/Pimple/zipball/ea22fb2880faf7b7b0e17c9809c6fe25b071fd76",
+                "reference": "ea22fb2880faf7b7b0e17c9809c6fe25b071fd76",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.1.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Pimple": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                }
+            ],
+            "description": "Pimple is a simple Dependency Injection Container for PHP 5.3",
+            "homepage": "http://pimple.sensiolabs.org",
+            "keywords": [
+                "container",
+                "dependency injection"
+            ],
+            "time": "2014-07-24 07:10:08"
+        },
+        {
+            "name": "qa-tools/qa-tools",
+            "version": "v1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/qa-tools/qa-tools.git",
+                "reference": "5456f64af5b94c5655f21a592b8817690c2096c7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/qa-tools/qa-tools/zipball/5456f64af5b94c5655f21a592b8817690c2096c7",
+                "reference": "5456f64af5b94c5655f21a592b8817690c2096c7",
+                "shasum": ""
+            },
+            "require": {
+                "behat/mink": "~1.6",
+                "mindplay/annotations": "~1.2@dev",
+                "php": ">=5.3.2"
+            },
+            "replace": {
+                "aik099/qa-tools": "self.version"
+            },
+            "require-dev": {
+                "aik099/coding-standard": "dev-master",
+                "behat/mink-selenium2-driver": "~1.2@dev",
+                "brianium/paratest": "~0.7",
+                "mockery/mockery": "~0.9"
+            },
+            "suggest": {
+                "aik099/phpunit-mink": "Allows to use PageObject inside PHPUnit tests and remotely collect code coverage information"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "QATools\\QATools\\": "./library/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Alexander Obuhovich",
+                    "email": "aik.bold@gmail.com"
+                },
+                {
+                    "name": "Dmitry Kushnikov",
+                    "email": "dkushnikov@gmail.com"
+                },
+                {
+                    "name": "Michael Geppert",
+                    "email": "evangelion1204@aol.com"
+                }
+            ],
+            "description": "Library that provides easy-to-use way of interaction with web-page elements in functional tests using PageObject pattern.",
+            "keywords": [
+                "BEM",
+                "HtmlElements",
+                "Mink",
+                "PageObject",
+                "acceptance",
+                "functional",
+                "phpunit",
+                "tests"
+            ],
+            "time": "2014-09-26 15:15:51"
+        },
+        {
+            "name": "sebastian/comparator",
+            "version": "1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/comparator.git",
+                "reference": "e54a01c0da1b87db3c5a3c4c5277ddf331da4aef"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/e54a01c0da1b87db3c5a3c4c5277ddf331da4aef",
+                "reference": "e54a01c0da1b87db3c5a3c4c5277ddf331da4aef",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3",
+                "sebastian/diff": "~1.1",
+                "sebastian/exporter": "~1.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Volker Dusch",
+                    "email": "github@wallbash.com"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@2bepublished.at"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Provides the functionality to compare PHP values for equality",
+            "homepage": "http://www.github.com/sebastianbergmann/comparator",
+            "keywords": [
+                "comparator",
+                "compare",
+                "equality"
+            ],
+            "time": "2014-05-11 23:00:21"
+        },
+        {
+            "name": "sebastian/diff",
+            "version": "1.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/diff.git",
+                "reference": "5843509fed39dee4b356a306401e9dd1a931fec7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/5843509fed39dee4b356a306401e9dd1a931fec7",
+                "reference": "5843509fed39dee4b356a306401e9dd1a931fec7",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.2-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Kore Nordmann",
+                    "email": "mail@kore-nordmann.de"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Diff implementation",
+            "homepage": "http://www.github.com/sebastianbergmann/diff",
+            "keywords": [
+                "diff"
+            ],
+            "time": "2014-08-15 10:29:00"
+        },
+        {
+            "name": "sebastian/environment",
+            "version": "1.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/environment.git",
+                "reference": "0d9bf79554d2a999da194a60416c15cf461eb67d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/0d9bf79554d2a999da194a60416c15cf461eb67d",
+                "reference": "0d9bf79554d2a999da194a60416c15cf461eb67d",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.2.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Provides functionality to handle HHVM/PHP environments",
+            "homepage": "http://www.github.com/sebastianbergmann/environment",
+            "keywords": [
+                "Xdebug",
+                "environment",
+                "hhvm"
+            ],
+            "time": "2014-10-22 06:38:05"
+        },
+        {
+            "name": "sebastian/exporter",
+            "version": "1.0.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/exporter.git",
+                "reference": "c7d59948d6e82818e1bdff7cadb6c34710eb7dc0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/c7d59948d6e82818e1bdff7cadb6c34710eb7dc0",
+                "reference": "c7d59948d6e82818e1bdff7cadb6c34710eb7dc0",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Volker Dusch",
+                    "email": "github@wallbash.com"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@2bepublished.at"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Adam Harvey",
+                    "email": "aharvey@php.net"
+                }
+            ],
+            "description": "Provides the functionality to export PHP variables for visualization",
+            "homepage": "http://www.github.com/sebastianbergmann/exporter",
+            "keywords": [
+                "export",
+                "exporter"
+            ],
+            "time": "2014-09-10 00:51:36"
+        },
+        {
+            "name": "sebastian/version",
+            "version": "1.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/version.git",
+                "reference": "b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43",
+                "reference": "b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43",
+                "shasum": ""
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+            "homepage": "https://github.com/sebastianbergmann/version",
+            "time": "2014-03-07 15:35:33"
+        },
+        {
+            "name": "symfony/css-selector",
+            "version": "v2.5.6",
+            "target-dir": "Symfony/Component/CssSelector",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/CssSelector.git",
+                "reference": "7cdf543a3f31935aae58de4e6e607d4bdeb3f5dc"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/CssSelector/zipball/7cdf543a3f31935aae58de4e6e607d4bdeb3f5dc",
+                "reference": "7cdf543a3f31935aae58de4e6e607d4bdeb3f5dc",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.5-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Symfony\\Component\\CssSelector\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Symfony Community",
+                    "homepage": "http://symfony.com/contributors"
+                },
+                {
+                    "name": "Jean-François Simon",
+                    "email": "jeanfrancois.simon@sensiolabs.com"
+                },
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                }
+            ],
+            "description": "Symfony CssSelector Component",
+            "homepage": "http://symfony.com",
+            "time": "2014-10-09 16:00:03"
+        },
+        {
+            "name": "symfony/event-dispatcher",
+            "version": "v2.5.6",
+            "target-dir": "Symfony/Component/EventDispatcher",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/EventDispatcher.git",
+                "reference": "804eb28dbbfba9ffdab21fe2066744906cea2212"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/804eb28dbbfba9ffdab21fe2066744906cea2212",
+                "reference": "804eb28dbbfba9ffdab21fe2066744906cea2212",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "psr/log": "~1.0",
+                "symfony/config": "~2.0",
+                "symfony/dependency-injection": "~2.0,<2.6.0",
+                "symfony/stopwatch": "~2.2"
+            },
+            "suggest": {
+                "symfony/dependency-injection": "",
+                "symfony/http-kernel": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.5-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Symfony\\Component\\EventDispatcher\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Symfony Community",
+                    "homepage": "http://symfony.com/contributors"
+                },
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                }
+            ],
+            "description": "Symfony EventDispatcher Component",
+            "homepage": "http://symfony.com",
+            "time": "2014-10-01 15:43:05"
+        },
+        {
+            "name": "symfony/yaml",
+            "version": "v2.5.6",
+            "target-dir": "Symfony/Component/Yaml",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/Yaml.git",
+                "reference": "2d9f527449cabfa8543dd7fa3a466d6ae83d6726"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/Yaml/zipball/2d9f527449cabfa8543dd7fa3a466d6ae83d6726",
+                "reference": "2d9f527449cabfa8543dd7fa3a466d6ae83d6726",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.5-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Symfony\\Component\\Yaml\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Symfony Community",
+                    "homepage": "http://symfony.com/contributors"
+                },
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                }
+            ],
+            "description": "Symfony Yaml Component",
+            "homepage": "http://symfony.com",
+            "time": "2014-10-01 05:50:18"
+        }
+    ],
+    "aliases": [],
+    "minimum-stability": "stable",
+    "stability-flags": {
+        "aik099/coding-standard": 20,
+        "mindplay/annotations": 20
+    },
+    "prefer-stable": false,
+    "platform": [],
+    "platform-dev": []
+}
Index: core/kernel/startup.php
===================================================================
--- core/kernel/startup.php
+++ core/kernel/startup.php
@@ -191,6 +191,10 @@
 		kUtil::includeOnce($a_file);
 	}
 
+	if ( version_compare(PHP_VERSION, '5.3.2', '>=') && file_exists(FULL_PATH . '/vendor/autoload.php') ) {
+		kUtil::includeOnce(FULL_PATH . '/vendor/autoload.php');
+	}
+
 	if (defined('DEBUG_MODE') && DEBUG_MODE && isset($debugger)) {
 		$debugger->AttachToApplication();
 	}
@@ -201,4 +205,6 @@
 
 	// system users
 	define('USER_ROOT', -1);
-	define('USER_GUEST', -2);
\ No newline at end of file
+	define('USER_GUEST', -2);
+
+	$GLOBALS['PHPUNIT_COVERAGE_DATA_DIRECTORY'] = WRITEABLE . '/remote_code_coverage';
Index: tools/build/build.properties.dist
===================================================================
--- /dev/null
+++ tools/build/build.properties.dist
@@ -0,0 +1,13 @@
+local.build=1
+base.dir=../..
+client.ip.address=
+cli.key=b674006f3edb1d9cd4d838c150b0567d
+
+website.domain=
+website.path=
+
+db.host=localhost
+db.user=
+db.password=
+db.name=
+db.tableprefix=
Index: tools/build/build_all.xml
===================================================================
--- /dev/null
+++ tools/build/build_all.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="In-Portal (full)" default="build">
+	<property file="build.properties" />
+	<resolvepath propertyName="base.dir" file="${base.dir}"/>
+
+	<property name="scan.dir" value="${base.dir}"/>
+	<property name="phpmd.exclude" value="blog,build,core/editor,core/ckeditor,modules/mpdf,system,vendor"/>
+	<property name="phpcpd.exclude" value="--exclude blog --exclude build --exclude core/editor --exclude core/ckeditor --exclude modules/mpdf --exclude system --exclude vendor"/>
+
+	<import file="targets/common.xml"/>
+
+	<fileset dir="${base.dir}" id="php.files">
+		<include name="**/*.php"/>
+		<exclude name="blog/**"/>
+		<exclude name="build/**"/>
+		<exclude name="core/editor/**"/>
+		<exclude name="core/ckeditor/**"/>
+		<exclude name="modules/mpdf/**"/>
+		<exclude name="system/**"/>
+		<exclude name="vendor/**"/>
+	</fileset>
+</project>
Index: tools/build/build_custom.xml
===================================================================
--- /dev/null
+++ tools/build/build_custom.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="In-Portal (custom module only)" default="build">
+	<property file="build.properties" />
+	<resolvepath propertyName="base.dir" file="${base.dir}"/>
+
+	<property name="scan.dir" value="${base.dir}/modules/custom"/>
+
+	<!--TODO: update tasks, that uses "phpmd.exclude" and "phpcpd.exclude" to handle empty exclusion list-->
+	<property name="phpmd.exclude" value="no-match"/>
+	<property name="phpcpd.exclude" value="--exclude no-match"/>
+
+	<import file="targets/common.xml"/>
+
+	<fileset dir="${base.dir}" id="php.files">
+		<include name="modules/custom/**/*.php"/>
+	</fileset>
+</project>
Index: tools/build/inc/custom_phpunit.xml
===================================================================
--- /dev/null
+++ tools/build/inc/custom_phpunit.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<phpunit backupGlobals="true"
+	backupStaticAttributes="false"
+	bootstrap="../../../core/kernel/tests/bootstrap.php"
+	colors="false"
+	convertErrorsToExceptions="true"
+	convertNoticesToExceptions="true"
+	convertWarningsToExceptions="true"
+	processIsolation="false"
+	stopOnFailure="false"
+	strict="true"
+	verbose="true">
+
+	<php>
+		<ini name="memory_limit" value="-1"/>
+	</php>
+
+	<testsuites>
+		<testsuite name="all">
+			<directory>../../../core/tests</directory>
+			<directory>../../../modules/custom/tests</directory>
+			<exclude>../../../core/tests/unit</exclude>
+		</testsuite>
+	</testsuites>
+
+	<listeners>
+		<listener class="\Mockery\Adapter\Phpunit\TestListener"/>
+	</listeners>
+
+	<logging>
+		<!--<log type="coverage-html" target="../../../build/coverage" title="BankAccount"
+			 charset="UTF-8" yui="true" highlight="true"
+			 lowUpperBound="35" highLowerBound="70"/>
+		<log type="coverage-clover" target="../../../build/logs/clover.xml"/>-->
+		<log type="junit" target="../../../build/logs/junit.xml" logIncompleteSkipped="false"/>
+	</logging>
+
+	<filter>
+		<blacklist>
+			<directory suffix=".php">..</directory>
+		</blacklist>
+		<whitelist addUncoveredFilesFromWhitelist="true">
+			<directory suffix=".php">../../../modules/custom</directory>
+			<exclude>
+				<directory>../../../blog</directory>
+				<directory>../../../modules/mpdf</directory>
+				<directory>../../../core/editor</directory>
+				<directory>../../../core/ckeditor</directory>
+				<directory>../../../system</directory>
+				<directory>../../../vendor</directory>
+
+				<directory>../../../core/tests</directory>
+				<directory>../../../modules/*/tests</directory>
+
+				<file>../../../core/kernel/tests/bootstrap.php</file>
+			</exclude>
+		</whitelist>
+	</filter>
+</phpunit>
Index: tools/build/inc/phpmd.xml
===================================================================
--- /dev/null
+++ tools/build/inc/phpmd.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<ruleset name="InPortal"
+		 xmlns="http://pmd.sf.net/ruleset/1.0.0"
+		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		 xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
+		 xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
+	<description>
+		In-Portal standard. Version: 1.0.1 from 21-Mar-2014
+	</description>
+
+	<rule ref="rulesets/codesize.xml">
+		<!-- event handlers are usually large; figure out how to exclude only for them -->
+		<exclude name="TooManyMethods"/>
+		<exclude name="ExcessiveClassComplexity"/>
+		<exclude name="ExcessiveClassLength"/>
+
+		<!-- exclude because defined below -->
+		<exclude name="ExcessiveMethodLength"/>
+	</rule>
+
+	<rule ref="rulesets/codesize.xml/ExcessiveMethodLength">
+		<properties>
+			<property name="minimum" value="120" />
+		</properties>
+	</rule>
+
+	<rule ref="rulesets/design.xml">
+		<!-- event handlers usually do much; figure out how to exclude only for them -->
+		<exclude name="CouplingBetweenObjects"/>
+	</rule>
+	<rule ref="rulesets/naming.xml">
+		<!-- let PHP_CodeSniffer check for them -->
+		<exclude name="LongVariable"/>
+		<exclude name="ConstantNamingConventions"/>
+
+		<!-- exclude because defined below -->
+		<exclude name="ShortVariable"/>
+	</rule>
+
+	<rule ref="rulesets/naming.xml/ShortVariable">
+		<properties>
+			<property name="minimum" value="2" />
+		</properties>
+	</rule>
+
+	<rule ref="rulesets/unusedcode.xml">
+		<!-- let PhpStorm deal with this -->
+		<exclude name="UnusedFormalParameter"/>
+	</rule>
+</ruleset>
Index: tools/build/inc/phpunit.xml
===================================================================
--- /dev/null
+++ tools/build/inc/phpunit.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<phpunit backupGlobals="true"
+	backupStaticAttributes="false"
+	bootstrap="../../../core/kernel/tests/bootstrap.php"
+	colors="false"
+	convertErrorsToExceptions="true"
+	convertNoticesToExceptions="true"
+	convertWarningsToExceptions="true"
+	processIsolation="false"
+	stopOnFailure="false"
+	strict="true"
+	verbose="true">
+
+	<php>
+		<ini name="memory_limit" value="-1"/>
+	</php>
+
+	<testsuites>
+		<testsuite name="all">
+			<directory>../../../core/tests</directory>
+			<directory>../../../modules/*/tests</directory>
+			<exclude>../../../core/tests/unit</exclude>
+		</testsuite>
+		<testsuite name="custom">
+			<directory>../../../modules/custom/tests</directory>
+		</testsuite>
+	</testsuites>
+
+	<listeners>
+		<listener class="\Mockery\Adapter\Phpunit\TestListener"/>
+	</listeners>
+
+	<logging>
+		<!--<log type="coverage-html" target="../../../build/coverage" title="BankAccount"
+			 charset="UTF-8" yui="true" highlight="true"
+			 lowUpperBound="35" highLowerBound="70"/>
+		<log type="coverage-clover" target="../../../build/logs/clover.xml"/>-->
+		<log type="junit" target="../../../build/logs/junit.xml" logIncompleteSkipped="false"/>
+	</logging>
+
+	<filter>
+		<blacklist>
+			<directory suffix=".php">..</directory>
+		</blacklist>
+		<whitelist addUncoveredFilesFromWhitelist="true">
+			<directory suffix=".php">../../..</directory>
+			<exclude>
+				<directory>../../../blog</directory>
+				<directory>../../../modules/mpdf</directory>
+				<directory>../../../core/editor</directory>
+				<directory>../../../core/ckeditor</directory>
+				<directory>../../../system</directory>
+				<directory>../../../vendor</directory>
+
+				<directory>../../../core/tests</directory>
+				<directory>../../../modules/*/tests</directory>
+
+				<file>../../../core/kernel/tests/bootstrap.php</file>
+			</exclude>
+		</whitelist>
+	</filter>
+</phpunit>
Index: tools/build/targets/common.xml
===================================================================
--- /dev/null
+++ tools/build/targets/common.xml
@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+### Requirements
+
+Using the template requires a range of PEAR packages present. They can be
+installed as follows:
+
+	pear config-set auto_discover 1
+	pear install pear.phpqatools.org/phpqatools
+
+	pear channel-discover pear.phpdoc.org
+	pear install phpdoc/phpDocumentor-alpha
+
+	pear channel-discover pear.phing.info
+	pear install -\-alldeps phing/phing
+
+	pear channel-discover pear.phpunit.de
+	pear install phpunit/PHPUnit_Selenium
+-->
+<project name="inc_common" default="build">
+	<import file="targets/db.xml"/>
+	<import file="targets/deploy.xml"/>
+	<import file="targets/folders.xml"/>
+
+	<php function="ini_set">
+		<param value="memory_limit"/>
+		<param value="-1"/>
+	</php>
+
+	<target name="build" description="Builds a project" depends="init,verify,analyze"/>
+
+	<target name="build-parallel" description="Builds a project (long targets executed in parallel)" depends="init,lint,tools-parallel,phpunit"/>
+
+	<target name="tools-parallel" description="Run tools in parallel">
+		<parallel threadCount="2">
+			<sequential>
+				<phingcall target="pdepend"/>
+				<phingcall target="phpmd-ci"/>
+			</sequential>
+
+			<phingcall target="phpcpd"/>
+			<phingcall target="phpcs-ci"/>
+			<phingcall target="phploc"/>
+			<phingcall target="phpdoc"/>
+		</parallel>
+	</target>
+
+	<!-- ### Verify code consistency
+
+	Make sure that our code is clean and functional. -->
+	<target name="verify" description="Verify code consistency" depends="init,lint"/>
+	<!--<target name="verify" description="Verify code consistency" depends="init,lint,phpunit"/>-->
+
+	<!-- ### Analyze code
+
+	Perform static analysis of the code to generate statistics, identify potential
+	problems and opportunities for refactorings and make sure that the code
+	complies with coding standards. -->
+	<target name="analyze" description="Analyze code" depends="init,phploc,phpmd-ci,phpcs-ci"/>
+	<!--<target name="analyze" description="Analyze code" depends="init,phploc,pdepend,phpmd-ci,phpcpd,phpcs-ci"/>-->
+
+	<!-- ### Generate documentation
+
+	Generate HTML documentation and code browser for the project. -->
+	<target name="docs" description="Generate documentation" depends="init,phpdoc" />
+
+	<!-- ### PHP linting
+
+	Check files for syntax errors. -->
+	<target name="lint" description="Perform syntax check of sourcecode files" depends="init">
+		<phplint haltonfailure="true" deprecatedAsError="true" cachefile="${build.cache.dir}/phplint.txt">
+			<fileset refid="php.files"/>
+		</phplint>
+	</target>
+
+	<!-- ### Generate code statistics
+
+	Measures the size of the project using
+	[phploc](http://sebastianbergmann.github.com/phploc/) and generates
+	statistics. -->
+	<target name="phploc" description="Measure project size using PHPLOC" depends="init">
+		<phploc reportType="csv" reportName="phploc" reportDirectory="${build.logs.dir}">
+			<fileset refid="php.files"/>
+		</phploc>
+	</target>
+
+	<target name="pdepend" description="Calculate software metrics using PHP_Depend" depends="init">
+		<exec executable="pdepend" passthru="true">
+			<arg value="--jdepend-xml=${build.logs.dir}/jdepend.xml"/>
+			<arg value="--jdepend-chart=${build.pdepend.dir}/dependencies.svg"/>
+			<arg value="--overview-pyramid=${build.pdepend.dir}/overview-pyramid.svg"/>
+			<arg value="--ignore=${phpmd.exclude}"/>
+			<arg path="${scan.dir}"/>
+		</exec>
+	</target>
+
+	<!-- ### Detect code mess
+
+	Uses [PHPMD](http://phpmd.org/) to detect code mess and look for potential
+	problems. -->
+	<target name="phpmd" description="Perform project mess detection using PHPMD (print human readable output)" depends="init">
+		<exec executable="phpmd" passthru="true">
+			<arg path="${scan.dir}"/>
+			<arg value="text"/>
+			<arg value="${build.config.dir}/inc/phpmd.xml"/>
+			<arg value="--suffixes"/>
+			<arg value="php"/>
+			<arg value="--exclude=${phpmd.exclude}"/>
+		</exec>
+	</target>
+
+	<!-- ### Detect code mess
+
+	Uses [PHPMD](http://phpmd.org/) to detect code mess and look for potential
+	problems. -->
+	<target name="phpmd-ci" description="Perform project mess detection using PHPMD (creates a log file for the CI server)" depends="init">
+		<exec executable="phpmd" passthru="true">
+			<arg path="${scan.dir}"/>
+			<arg value="xml"/>
+			<arg value="${build.config.dir}/inc/phpmd.xml"/>
+			<arg value="--reportfile"/>
+			<arg value="${build.logs.dir}/pmd.xml"/>
+			<arg value="--suffixes"/>
+			<arg value="php"/>
+			<arg value="--exclude=${phpmd.exclude}"/>
+		</exec>
+	</target>
+
+	<target name="phpcs" description="Find coding standard violations using PHP_CodeSniffer (print human readable output)" depends="init">
+		<!--<exec executable="${base.dir}/vendor/bin/phpcs" passthru="true">-->
+		<!--<exec executable="/home/alex/web/g/direct/PHP_CodeSniffer/scripts/phpcs" passthru="true">-->
+		<exec executable="phpcs" passthru="true">
+			<arg value="--standard=${vendor.dir}/aik099/coding-standard/CodingStandard"/>
+			<arg value="-wvs"/>
+			<arg value="--encoding=UTF-8"/>
+			<arg value="--extensions=php"/>
+			<arg value="--report=diff"/>
+			<arg value="--sniffs=Generic.WhiteSpace.ScopeIndent"/>
+			<arg value="-d"/>
+			<arg value="memory_limit=-1"/>
+			<arg path="${base.dir}/modules/custom/units/widgets/widget_tp.php"/>
+			<!--<arg path="${scan.dir}"/>-->
+		</exec>
+	</target>
+
+	<target name="phpcs-ci" description="Find coding standard violations using PHP_CodeSniffer (creates a log file for the CI server)" depends="init">
+		<!--<exec executable="${base.dir}/vendor/bin/phpcs" passthru="true">-->
+		<!--<exec executable="/home/alex/web/g/direct/PHP_CodeSniffer/scripts/phpcs" passthru="true">-->
+		<exec executable="phpcs" passthru="true">
+			<arg value="--report=checkstyle"/>
+			<arg value="--report-file=${build.logs.dir}/checkstyle.xml"/>
+			<arg value="--standard=${vendor.dir}/aik099/coding-standard/CodingStandard"/>
+			<arg value="-w"/>
+			<arg value="--encoding=UTF-8"/>
+			<arg value="--extensions=php"/>
+			<arg value="-p"/>
+			<arg value="-d"/>
+			<arg value="memory_limit=-1"/>
+			<arg path="${scan.dir}"/>
+		</exec>
+	</target>
+
+	<!-- ### Detect potential copy/pasting
+
+	Uses [phpcpd](https://github.com/sebastianbergmann/phpcpd) to detect duplicate
+	code. This indicates potential refactorings.-->
+	<target name="phpcpd" description="Find duplicate code using PHPCPD" depends="init">
+		<exec executable="phpcpd" passthru="true">
+			<arg value="--log-pmd=${build.logs.dir}/pmd-cpd.xml"/>
+			<arg line="${phpcpd.exclude}"/>
+			<arg path="${scan.dir}"/>
+		</exec>
+	</target>
+
+	<!-- ### Generate documentation -->
+	<!-- #### Generate API Documentation
+
+	Uses [phpDocumentor](http://www.phpdoc.org/) to generate documentation. -->
+	<target name="phpdoc" description="Generate API documentation using phpdoc" depends="init">
+		<phpdoc2 title="API Documentation" destdir="${build.api.dir}" template="responsive" quiet="true">
+			<fileset refid="php.files"/>
+		</phpdoc2>
+	</target>
+
+	<target name="phpunit" description="Run tests with PHPUnit" depends="init">
+		<exec executable="phpunit" logoutput="true" checkreturn="true">
+			<arg value="--configuration"/>
+			<arg path="${build.config.dir}/phpunit.xml"/>
+			<arg value="--testsuite"/>
+			<arg value="custom"/>
+		</exec>
+	</target>
+
+	<target name="init" depends="create-aliases,folders-create" description="Prepare for build">
+		<if>
+			<isfalse value="${local.build}"/>
+			<then>
+				<phingcall target="deploy-ci"/>
+			</then>
+		</if>
+	</target>
+
+	<target name="create-aliases" description="Creating directory aliases" hidden="true">
+		<property name="pdo.dsn.without.db" value="mysql:host=${db.host}"/>
+		<property name="pdo.dsn" value="${pdo.dsn.without.db};dbname=${db.name}"/>
+
+		<property name="build.config.dir" value="."/>
+		<property name="build.dir" value="${base.dir}/build"/>
+		<!--<property name="build.api.dir" value="${build.dir}/api"/>-->
+		<!--<property name="build.coverage.dir" value="${build.dir}/coverage"/>-->
+		<property name="build.logs.dir" value="${build.dir}/logs"/>
+		<property name="build.cache.dir" value="${build.dir}/cache"/>
+		<!--<property name="build.pdepend.dir" value="${build.dir}/pdepend"/>-->
+		<property name="vendor.dir" value="${base.dir}/vendor"/>
+	</target>
+</project>
Index: tools/build/targets/db.xml
===================================================================
--- /dev/null
+++ tools/build/targets/db.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="inc_db" default="build">
+	<target name="db-fill-ci" description="Inserts testing data into database" depends="create-aliases,db-clean-ci,config-create">
+		<echo msg="Filling database '${db.name}' with demo data"/>
+
+		<foreach param="filename" absparam="db.file" target="db-import-file">
+			<filelist dir="${base.dir}/system" files="build-schema.sql,build-data.sql,build-patch.sql"/>
+		</foreach>
+	</target>
+
+	<target name="db-clean-ci" description="Cleans the database">
+		<echo msg="Deleting database '${db.name}'"/>
+		<phingcall target="db-inline-query">
+			<property name="skip-db" value="true"/>
+			<property name="db.query" value="DROP DATABASE ${db.name};"/>
+		</phingcall>
+
+		<echo msg="Creating database '${db.name}'"/>
+		<phingcall target="db-inline-query">
+			<property name="skip-db" value="true"/>
+			<property name="db.query" value="CREATE DATABASE ${db.name};"/>
+		</phingcall>
+	</target>
+
+	<target name="db-dump" description="Dumps database (to be used in CI)" depends="create-aliases">
+		<echo msg="Truncating '${db.tableprefix}SystemCache' table in '${db.name}' database"/>
+		<phingcall target="db-inline-query">
+			<property name="db.query" value="TRUNCATE TABLE ${db.tableprefix}SystemCache;"/>
+		</phingcall>
+
+		<echo msg="Truncating '${db.tableprefix}SystemLog' table in '${db.name}' database"/>
+		<phingcall target="db-inline-query">
+			<property name="db.query" value="TRUNCATE TABLE ${db.tableprefix}SystemLog;"/>
+		</phingcall>
+
+		<echo msg="Dumping database '${db.name}' schema"/>
+		<exec executable="mysqldump" checkreturn="true">
+			<arg value="--host=${db.host}"/>
+			<arg value="--user=${db.user}"/>
+			<arg value="--password=${db.password}"/>
+			<arg value="--compact"/>
+			<arg value="--no-data"/>
+			<arg value="${db.name}"/>
+			<arg value="&gt;"/>
+			<arg path="${base.dir}/system/build-schema.sql"/>
+		</exec>
+
+		<echo msg="Dumping database '${db.name}' data"/>
+		<exec executable="mysqldump" checkreturn="true">
+			<arg value="--host=${db.host}"/>
+			<arg value="--user=${db.user}"/>
+			<arg value="--password=${db.password}"/>
+			<arg value="--compact"/>
+			<arg value="--no-create-info"/>
+			<arg value="${db.name}"/>
+			<arg value="&gt;"/>
+			<arg path="${base.dir}/system/build-data.sql"/>
+		</exec>
+
+		<echo msg="Creating empty '${db.name}' patch"/>
+		<touch file="${base.dir}/system/build-patch.sql" />
+	</target>
+
+	<!-- ## Helper targets
+
+	These targets are used throughout the project and should normally not be
+	executed directly.-->
+	<target name="db-import-file" description="Import file into database" hidden="true">
+		<echo msg="Importing '${db.file}' into '${db.name}' database"/>
+
+		<!--<pdosqlexec url="${pdo.dsn}" userid="${db.user}" password="${db.password}" encoding="utf-8">
+			<transaction src="${db.file}"/>
+		</pdosqlexec>-->
+
+		<exec executable="mysql" checkreturn="true">
+			<arg value="--host=${db.host}"/>
+			<arg value="--user=${db.user}"/>
+			<arg value="--password=${db.password}"/>
+			<arg value="${db.name}"/>
+			<arg value="&lt;"/>
+			<arg path="${db.file}"/>
+		</exec>
+	</target>
+
+	<target name="db-inline-query" description="Runs sql query in database" hidden="true">
+		<property name="skip-db" value="false"/>
+
+		<if>
+			<isfalse value="${skip-db}"/>
+			<then>
+				<exec executable="mysql" checkreturn="true">
+					<arg value="--host=${db.host}"/>
+					<arg value="--user=${db.user}"/>
+					<arg value="--password=${db.password}"/>
+					<arg value="${db.name}"/>
+					<arg value="-BNe"/>
+					<arg value="${db.query}"/>
+				</exec>
+			</then>
+			<else>
+				<exec executable="mysql" checkreturn="true">
+					<arg value="--host=${db.host}"/>
+					<arg value="--user=${db.user}"/>
+					<arg value="--password=${db.password}"/>
+					<arg value="-BNe"/>
+					<arg value="${db.query}"/>
+				</exec>
+			</else>
+		</if>
+	</target>
+</project>
Index: tools/build/targets/deploy.xml
===================================================================
--- /dev/null
+++ tools/build/targets/deploy.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="inc_deploy" default="build">
+	<target name="deploy-ci" description="Deployment tasks, that are required after SVN checkout" depends="create-aliases,db-fill-ci">
+		<property name="tools.dir" value="${base.dir}/tools"/>
+
+		<echo msg="Fixing shell scripts permissions under '/tools' folder"/>
+		<chmod mode="0755" verbose="true" failonerror="true">
+			<fileset dir="${tools.dir}">
+				<include name="*.sh"/>
+			</fileset>
+		</chmod>
+
+		<echo msg="Fixing '/system' folder permissions"/>
+		<exec dir="${tools.dir}" command="./fix_perms.sh" logoutput="true"/>
+
+		<echo msg="Removing compiled templates under '/system/cache' folder"/>
+		<exec dir="${tools.dir}" command="./clear_cache.sh" logoutput="true"/>
+
+		<composer command="install" composer="/usr/local/bin/composer">
+			<arg value="--working-dir"/>
+			<arg path="${base.dir}"/>
+			<arg value="--ansi"/>
+		</composer>
+
+		<phingcall target="inportal-deploy"/>
+	</target>
+
+	<target name="inportal-deploy" description="Runs In-Portal deployment script">
+		<echo msg="Running In-Portal Deployment Script (part of 'do_update') ..."/>
+
+		<exec executable="php" logoutput="true" checkreturn="true">
+			<arg path="${base.dir}/tools/run_event.php"/>
+			<arg value="adm:OnDeploy"/>
+			<arg value="${cli.key}"/>
+			<arg value="${client.ip.address}"/>
+		</exec>
+	</target>
+</project>
Index: tools/build/targets/folders.xml
===================================================================
--- /dev/null
+++ tools/build/targets/folders.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="inc_folders" default="build">
+	<target name="folders-create" description="Creates folders, to store build artifacts" depends="create-aliases,folders-delete">
+		<!--<mkdir dir="${build.api.dir}"/>-->
+		<!--<mkdir dir="${build.coverage.dir}"/>-->
+		<mkdir dir="${build.logs.dir}"/>
+		<!--<mkdir dir="${build.pdepend.dir}"/>-->
+		<mkdir dir="${build.cache.dir}"/>
+		<mkdir dir="${build.dir}/test_data"/>
+		<mkdir dir="${build.dir}/system/remote_code_coverage"/>
+
+		<copy todir="${base.dir}/system" overwrite="true">
+			<fileset dir="${build.dir}/test_data">
+				<include name="**/*"/>
+			</fileset>
+		</copy>
+
+		<if>
+			<isfalse value="${local.build}"/>
+			<then>
+				<echo message="Setting 'RewriteBase /' to solve problems with 'VirtualDocumentRoot' option"/>
+				<echo file="${base.dir}/.htaccess" append="true">
+					RewriteBase /
+				</echo>
+			</then>
+		</if>
+	</target>
+
+	<target name="folders-delete" description="Deletes folders, where build artifacts are stored" depends="create-aliases">
+		<!--<delete dir="${build.api.dir}"/>-->
+		<!--<delete dir="${build.coverage.dir}"/>-->
+		<delete dir="${build.logs.dir}"/>
+		<!--<delete dir="${build.pdepend.dir}"/>-->
+	</target>
+
+	<target name="config-create" description="Creates '/system/config.php' file" depends="create-aliases,config-delete">
+		<touch file="${base.dir}/system/config.php" />
+
+		<echo file="${base.dir}/system/config.php">&lt;?php
+			$_CONFIG['Misc']['WriteablePath'] = '/system';
+			$_CONFIG['Misc']['RestrictedPath'] = '/system/.restricted';
+			$_CONFIG['Misc']['WebsitePath'] = '${website.path}';
+			$_CONFIG['Misc']['Domain'] = '${website.domain}';
+			$_CONFIG['Misc']['AdminDirectory'] = '/admin';
+			$_CONFIG['Misc']['AdminPresetsDirectory'] = '/admin';
+			$_CONFIG['Misc']['ApplicationClass'] = 'kApplication';
+			$_CONFIG['Misc']['ApplicationPath'] = '/core/kernel/application.php';
+			$_CONFIG['Misc']['CacheHandler'] = 'Fake';
+			$_CONFIG['Misc']['MemcacheServers'] = 'localhost:11211';
+			$_CONFIG['Misc']['CompressionEngine'] = 'php';
+			$_CONFIG['Misc']['WebsiteCharset'] = 'utf-8';
+			$_CONFIG['Misc']['EnableSystemLog'] = '1';
+			$_CONFIG['Misc']['SystemLogMaxLevel'] = '5';
+			$_CONFIG['Misc']['TrustProxy'] = '0';
+
+			$_CONFIG['Database']['DBType'] = 'mysql';
+			$_CONFIG['Database']['DBHost'] = '${db.host}';
+			$_CONFIG['Database']['DBName'] = '${db.name}';
+			$_CONFIG['Database']['DBUser'] = '${db.user}';
+			$_CONFIG['Database']['DBUserPassword'] = '${db.password}';
+			$_CONFIG['Database']['DBCollation'] = 'utf8_general_ci';
+			$_CONFIG['Database']['TablePrefix'] = '${db.tableprefix}';
+			$_CONFIG['Database']['DBCharset'] = 'utf8';
+		</echo>
+	</target>
+
+	<target name="config-delete" description="Deletes '/system/config.php' file" depends="create-aliases">
+		<delete file="${base.dir}/system/config.php"/>
+	</target>
+</project>