Heavy refactoring + experiments with categories