refactor spike