Restructured with OO