can change subscription at runtime
add useful methods