added autocompleter

if defining `self` why not using it in the whole object instead of `this` for consistency