use `or` implemnt