I think IPv6 is great in that it simplifies things by consolidating them. NDP is built into ICMP, which facilitates addressing and routing; almost replacing DHCP and ARP. There is a DHCPv6 functionality if you want it(nice to have options).
I do like the idea of extending ICMP with what's called Neighbor Discovery Protocol. NDP defines new packet types responsible for routing functionality similar to what ARP provides, except it's consolidated into ICMP.
I have much more to learn about using IPv6 as I don't really use it. I do know that you can send rogue 'router-advertisement' packets(ICMPv6-NDP type 134) which is equivalent to an ARP reply packet in how it functions. It's letting all computers on the network know, "i'm the new gateway; here's my address and route all traffic through me". The same thing can be done for other nodes on the network, but instead of router advertisement it's called neighbor-advertisement(ICMPv6-NDP type 136). A type 136 packet would say "here's my IPv6 address and here's my MAC" like how an ARP reply packet would function. This is the basis of a MITM attack using IPv6.
You can also use 'solicitation packets' for discovering gateways and other hosts on the network. This would be like an ARP request packet looking for other hosts on the LAN. You can see the parallels in function when comparing to IPv4, and it's apparent that they've 'cleaned' things up quite a bit by consolidating functionality.
Sources:
http://en.wikipedia.org/wiki/IPv6,
http://en.wikipedia.org/wiki/Neighbor_Discovery_Protocol,
https://www.thc.org/thc-ipv6/README