refactor comes again =)