Initial implemenation
Updated