Adding in thread support, basic playing should be in