added interface provider; code cleanup;