refactor and experimentation