rewritten without the symbolic stuff