refactor to use interface to wrap run and fallback functions