move implementations to header file (Mutex & Cond)
implement Semaphore
add a new Thread implementation, additional work required