a little refactor :) -- still work