implemented vertex structs instead of straight float vectors