add generate composition to interface