add more error checking