refactor to immutable, and first tests