all these changes should really move to composer.js