separated modules and added yaml parsing