realize a lot of methods