keyboard functionality complete