let rec partition_view view lst =
         let rec view_split view view_part items =
            if View.equal View.empty view then 
               (view,view_part)
            else begin
               match items with 
                  0 ->
                     (view,view_part)
               |  _ ->
                     let proc = View.choose view in
                     let view_part' = View.add view_part proc in
                     let view' = View.remove view proc in
                     view_split view' view_part' (items-1)
            end
         in
         if View.equal view View.empty then 
            lst
         else begin
            let (view',part) = view_split view View.empty
                                 max_views_per_packet_fragment in
            partition_view view' (part :: lst)
         end