add docs for constructor and make all parameters optional