added machine interface