add yaml-cpp dependency
move logic out of engine