implementing GUI System