removing prototype
refactoring agent inheritance without prototype