implement the whole thing
add tests for initial yaml implementation
add custom directory path support
add nested data support