add some faser class and member documentation and do some more null checks for public accessible methods