Porting in ruby hash, probably needs a lot more methods hehe