Added a Struct
Adds a Enum
Reorganizes the code