add typed composition