Semi-big changes. Another big OOP shift needed I think.