emulation logic moved to seprate class