clean code.
update tests.