trying out a compilation first approach