Assuming I want to accept different (let's say 3 or 4) tokens on exchange one specific token (MyToken). Let's call this X transfer.
I'm thinking to write ERC223 contract which will accept different tokens and identify X transfer by data parameter. After that make a call to MyToken (ERC20 or ERC223) contract passing received address, amount, predefined rate and give MyToken on exchange.
Is this complication or I can just allow users to buy MyToken with other ERC20 token instead of Ether?