sema_list implementation