restructured for composer