Change list(String groupName) method to be private, since it really cannot be called independently due to its interaction with the semaphore.