added DTO and several methods