add logic for buff