Added FrameListener trait to handle rendering