initial skeleton implementation