Updated to include concept of adapters for different struct types