updated +more functions