updated for more composition