Added keyboard input framework & some toString() reformatting