adding some more structs and shit