If you don't quit easy, you'll make it work, at the end. But, large program is a different story. When you change one part, you can't easily see all implications on the rest of the program. The only thing you miss, at this point, is better way to organize a number of procedures or functions that you already wrote, and link them with data structures they manipulate with. First element is set of all values permitted for that type, and second element is set of all operations we can execute on these values.
Data type is duality of values and operations .
Actually, class is no more than programming language way to define a data type. I'm interested in - and that's the way I linked them with operations. Although having same name, these methods are different. So, we spare names and avoid conflicts. These sub-modules define exactly what they can see and what can be seen from outside world, but that looks like trying to smash a fly with a hammer.