Refactor all classes to use Struct