use alist instead of hash