add conditionals and abtract composer class