full interface struct