rationalise queue behaviour such that all use generic queue access enqueue and dequeue but enable partial or total (exception throwing) using template specialization