A simple workflow engine