diff --git a/README.md b/README.md
index 7f20113..dd40eb2 100644
--- a/README.md
+++ b/README.md
@@ -7,16 +7,95 @@ peer-info JavaScript implementation
[![Dependency Status](https://david-dm.org/diasdavid/js-peer-info.svg?style=flat-square)](https://david-dm.org/diasdavid/js-peer-info)
[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/feross/standard)
-> Peer Info contains information about a peer Id and its multiaddrs. This module is used by IPFS and libp2p.
+> A PeerInfo object contains information about a
+> [PeerID](https://github.com/diasdavid/js-peer-id) and its
+> [multiaddrs](https://github.com/jbenet/js-multiaddr). This module is used by
+> [IPFS](https://github.com/ipfs/ipfs) and
+> [libp2p](https://github.com/diasdavid/js-libp2p).
-# Usage
+# Example
-### In Node.js through npm
+```js
+const PeerInfo = require('peer-info')
+const multiaddr = require('multiaddr')
+
+const peer = new PeerInfo()
+
+// TCP port 5001
+peer.multiaddr.add(multiaddr('/ip4/1.2.3.4/tcp/5001'))
-```bash
-> npm install --save peer-info
+// UDP port 8001
+peer.multiaddr.add(multiaddr('/ip4/1.2.3.4/udp/8001'))
+
+// mic/speaker soundwaves using frequencies 697 and 1209
+peer.multiaddr.add(multiaddr('/sonic/bfsk/697/1209'))
```
-```javascript
+# API
+
+```js
const PeerInfo = require('peer-info')
```
+
+## const peer = new PeerInfo()
+
+Creates a new PeerInfo instance and also generates a new underlying
+[PeerID](https://github.com/diasdavid/js-peer-id) for it.
+
+## const peer = new PeerInfo(peerId)
+
+Creates a new PeerInfo instance from an existing PeerID.
+
+## peer.multiaddrs
+
+A list of multiaddresses instances that `peer` can be reached at.
+
+## peer.multiaddr.add(addr)
+
+Adds a new multiaddress that `peer` can be reached at. `addr` is an instance of
+a [multiaddr](https://github.com/jbenet/js-multiaddr).
+
+## peer.multiaddr.addSafe(addr)
+
+Adds a new multiaddress that `peer` can be reached at.
+
+..Safely? **TODO**
+
+## peer.multiaddr.rm(addr)
+
+Removes a multiaddress instance `addr` from `peer`.
+
+## peer.multiaddr.replace(existing, fresh)
+
+Removes the array of multiaddresses `existing` from `peer`, and adds the array
+of multiaddresses `fresh`.
+
+
+# Installation
+
+## npm
+
+```sh
+> npm i peer-info
+```
+
+## Node.JS, Browserify, Webpack
+
+```JavaScript
+var PeerInfo = require('peer-info')
+```
+
+## Browser: `
+
+
+```
+
+# License
+
+MIT