using explicit threads