Added missing fields for allocation site
Refactoring
Removed unnecessary interfaces
Cleanup
Organized imports
Updated test case
Everything working except recursion