implemented more functions