OOP
Revert "OOP"

This reverts commit d282996b8f40371643fa13dc1a84ebed99ffbe2d.
Revert "Revert "OOP""

This reverts commit c167773f2bff31304b0c350984ea18387b055f6d.
Merge origin/master
Some