updating after huge revision and refactors