resolves #12, add documentations