compose view controller