dynamic binding the first implementation was just for testing purpose