cleaner approach