refactoring xmltied behaviour to its own object