Added more references, improved guidelines and setion about smart pointers