guard clauses on partial definitions