Extract Observable behaviour into mixin