[#14] refactor