now abstract class
updated API
renamed structure into reference
added natives
update