seems to work properly and predict what is to be said, all error checks still left in