begin implementing defmachine macro