more OO updates, added event listeners