refactor + ip