added and revised