beginning of front-end refactor
merged