adapted for use with composer