First pass at functional add_ip