related documents Crossing the gap from imperative to functional programming through refactoring Conference Proceeding