created codec interface to remove cycle