Implementation using extern classes