made 'and' and 'or' lazy
I failed at recursion