moved shared functions to device_tree mixin