refactor derived function