breaking out functionality