compose can get a bit wordy...