implemented GUI