added a lot of methods