finish with base functionality