a cleaner approach