Refactored Polymer-vs-non-Polymer in spark.dart using abstract hierarchy vs isPolymer()