lots of crossover issues. needs refactoring