add more docs, refactor freeze