Saving state more efficiently

Currently it costs 8 * 4 bytes to save for NoWidget's placing which is huge when the state array is huge, we can reduce it to pointer size by having Option<Box<Placing>>