Merge "Refactor permission and state checking"