trying subscribable as a generic interface