added more comments
added opaque pointer method to implement creation of data structure