UserThread redesigned to a mock, test friendly version