introduction to structs and interfaces