attempt to get a cleaner approach