tests cover all methods now, started refactoring