Changed formatting, fixed UDP, cleaned up, and added reading from a file