adapt to use with composer