allow elements to have non primitive elements
added first version of library