removed eval where possible