turning the 'element' struct into a typedef to make more scalable & modular