improvements
skip if operation failed
use lower case vars