Updated to support Machina's factory method