extract lister to different file
extract status struct
extract everything else to their own files
refactor integration tests
handle cases where the dependency path is a subdir of a project