add model composition
add websocket support