updating master with many changes