updated to better design