Working towards a functional simulator