note to self: add copy function to the structs