using more c# 6.0 features
other cleanup