re-write

 * new and better api
 * added `toggle`
 * added bi-directional relationships
 * tests and docs still missing