add prototypal and functional inheritance