split some method into Source::Data