First Implementation

Works correctly