solution 38, refactor 32 to keep namespace clean