not a super fan of this return block since it's not easy to scan and read but I'll let you figure out what works for you and any potential contributions :)