updated API, added support for weak properties