implement all methods
error detected version