added gui implementation