refactoring.
impl.