initial contribution after refactoring