* begin refactor of framework