change to native java ServiceLoader