more work on calc() etc