Refactored the entire gem
Added ip module