use self everywhere
fix redoundant params