extensive refactor of types