change find() to not throw error and accept optional fallback function