Finished Program. Need to optimize