Currently, the user cannot create a custom tweaked level. Like he/she wants to use L2 without canvas image manipulation (see also #25, #27). The only option is to create a level that is at the time of the creation the same as the original but it may in time become more and more different.
I think that we need a mechanism where each level can specify (even recursively) the parent level and the tweaks. So a user-defined level could be very similar to the tweaked level, that can be created from 0.7.
From the implementation standpoint, I think that we should abandon the Object.assign methods and return to Object.clone like we did originally. Each level should implement a function (this can possibly be done by shadowing the properties in the prototype chain) that can recursively determine if a wrapping group should be applied and its level.
to comment on this ticket.