A little restructuring
Will need to rework due to error: generic types cannot have explicit layout