implement => and refactored fn grammar