Better function parser