functional and oop