broke out message handling in a separate thread
fixed issue where seeking past end resulted in weird position reports
fixed bug where the wrong message string was used from callbacks