overhauled functions