better design
get simpler