redesigned Leap interface into LeapInterface, LeapWrapper and LeapDataHandler to make dependency injection easier to use for testing
minor refactoring