slightly changed compose