added base functions