[#12] refactor