adapted to work with composer