adding manual implementation