refactor @receive deco