more tests
refactor like hell