withMeta impl

TODO needs cleaning

See #61