starting v2.0 refactor