[#13] refactor