implements several premethod