updated implementation
added initial implementation