first commit with basic implementation