added purity::rect