create deep paths if they don't exist. fixes #54