I don't know if it's a good idea to allow return type as Boolean, since we can get a NullPointerException.