removed parent pointer in widget constructors, now parent.AddChild must be called separately