add abstract GUI, header file