refactored more & possibly unnecessary tests added