clean up statement API

made statement class an abstract class by
making the constructor protected