better code separation