IS #4: more refactoring, cleaning the API