now supports properties and hooks