pre- and post- should be synchronous