nicer thread interface