I replaced everything with has and it completely broke it, started treating all the boolean values as being true even when they were set to false. Reading the docs: "Returns true if the attribute is set to a non-null or non-undefined value." Sounds like false should fall under that, but regardless, I like the readability of get better, has to me reads as does this model have this property, yes? then return true. get on the other hand gets the property value and returns based on its actual value, could extend it to be === true, but I think that its fine as is.