restructured for usage with composer.json