add attempt2 (oop)