more work on provides implementation