gui widget system, fix #39