initial implementation work