eval is in fact evil. so we will not use it