Initial 3.0 refactor