Added Need and Pet implementation and added lots of documentation.