Using ServiceLoader for loading implementations
ouch, this should be final