major refactoring, private -> protected, removed flags (now can simply set backgroundColor to null), shadow has offsets and can be applied to outlined text too, setProperties() to bulk-change values