seperated code, machine needs to be explicitly initialized