merged with master after style changes