Feature/add node api

It's better if the constructor is private to prevent people from trying to new it.