refactor sligtly