implemented user thread