modified
cleaned up