[#50] Further refactoring