Changed Device private members to protected
Marked methods virtual to allow subclassing with custom Listener
toLeapVector named properly in implementation