added abstract thread, need implementation