move payment engine to class instead use lambda and hashes
added payment_engine interface
fix conflicts