Fixing it back to use sessions, and added some more method implementations