add comments and usecase examples