added interface and updated methods to follow