pre and post 'hooks'