refactor

add propagate for later use