Making init method protected. Adding some more documentation