fixed 'compose'; added new implementations