Further modifications, seems wordy though