*refactored things a bit and added a directed graph implementation (easier way to determine install order)
*updated test cases