Why did you create concrete implementations of these methods?