move __exists to base