semaphore classes and trivial test