Second commit
Re-implemented using linked lists and hash tables